WordPress 创建存档页面

在 WordPress 中,标签(Tag)的存档页面通常自动由 WordPress 生成,并通过访问特定的 URL 来显示。例如,访问 example.com/tag/tag-name/ 就会显示包含该标签的所有文章列表。

如果你想自定义标签存档页面,或者想为标签存档页面添加一些额外的功能,可以使用 WordPress 的模板文件和钩子。

1. 创建标签存档页面

WordPress 默认会根据标签(tag)生成存档页面,你无需手动创建存档页面。只要你有标签,WordPress 会自动为其创建一个 URL 结构:/tag/{tag-name}/,并显示与该标签相关的文章。

模板文件:

  • 如果你没有自定义模板文件,WordPress 会使用 archive.phpindex.php 来渲染标签存档页面。
  • 如果你希望自定义标签存档页面,你可以创建 tag.php 模板文件。tag.php 会专门用于显示标签存档页面。

示例:tag.php 文件

在你的主题文件夹中,创建一个 tag.php 文件,这样你可以定制标签存档页面的输出。

<?php
get_header();  // 加载页头

// 获取当前标签
$current_tag = get_queried_object();

echo '<h1>标签:' . single_tag_title('', false) . '</h1>'; // 显示当前标签的名称

// 如果标签下有文章,显示文章列表
if ( have_posts() ) :
    echo '<ul>';
    while ( have_posts() ) : the_post();
        echo '<li>';
        echo '<a href="' . get_the_permalink() . '">' . get_the_title() . '</a>';
        echo '</li>';
    endwhile;
    echo '</ul>';

    // 分页
    the_posts_pagination();
else :
    echo '<p>没有找到相关文章。</p>';
endif;

get_footer();  // 加载页脚

解释:

  • get_header()get_footer():用于加载 WordPress 网站的页头和页脚。
  • get_queried_object():获取当前查询的对象。在标签存档页面,它会返回当前标签的详细信息。
  • single_tag_title():获取当前标签的名称,用于在页面上显示标签的标题。
  • have_posts()the_post():这是 WordPress 标准的循环,用于遍历并显示所有与当前标签相关的文章。
  • the_posts_pagination():用于显示分页链接,帮助用户浏览更多的文章。

2. 自定义标签存档页面的 URL 结构

WordPress 默认使用 /tag/{tag-name}/ 结构生成标签存档页面。如果你希望更改标签存档的 URL 结构,可以通过以下步骤:

步骤:

  1. 进入 WordPress 后台。
  2. 转到 设置 > 永久链接
  3. 在永久链接设置页面,选择合适的结构或者使用自定义结构。你可以将 tag 更改为其他名称,或者将其与其他内容结合。

3. 通过 pre_get_posts 修改标签存档查询

你还可以使用 pre_get_posts 钩子在标签存档页面进行查询修改。例如,改变每页显示的文章数量,或按自定义字段排序。

示例:修改标签存档页面每页显示的文章数量

add_action( 'pre_get_posts', function( $query ) {
    // 确保修改的是主查询并且是标签存档页面
    if ( !is_admin() && $query->is_main_query() && is_tag() ) {
        $query->set( 'posts_per_page', 20 );  // 每页显示 20 篇文章
    }
} );

4. 自定义标签存档的 CSS 和样式

你可以为标签存档页面添加特定的样式,来定制标签存档页面的外观。通过 tag.php 文件,你可以为页面添加不同的 CSS 类,甚至使用标签的 ID 或名称来定制不同标签页面的样式。

示例:为标签存档页面添加特定的类

<body <?php body_class( 'tag-archive-' . sanitize_title( single_tag_title('', false) ) ); ?>>

这个代码将为 body 元素添加一个额外的类,类似 tag-archive-news,根据当前标签的名称动态添加类。你可以在 CSS 文件中使用该类来定制每个标签存档页面的样式。

总结

  • 默认标签存档:WordPress 自动为每个标签生成存档页面,通常位于 /tag/{tag-name}/ 路径。
  • 自定义标签存档模板:通过创建 tag.php 文件,可以定制标签存档页面的布局和内容。
  • 修改标签存档查询:使用 pre_get_posts 钩子修改标签存档页面的文章数量、排序等。
  • URL 结构定制:通过设置永久链接选项,你可以定制标签存档页面的 URL 结构。

这些方法可以帮助你创建和自定义 WordPress 中的标签存档页面,提升用户体验和网站的功能性。

您说:

WordPress 如何创建 Category 存档

ChatGPT 说:

在 WordPress 中,Category 存档页面是由系统自动生成的,无需手动创建。你只需为文章分配类别(Category),然后 WordPress 会为每个类别自动生成一个存档页面,显示该类别下的所有文章。

1. WordPress 默认创建 Category 存档

默认情况下,WordPress 会为每个类别生成一个存档页面,URL 结构为:
http://yourdomain.com/category/category-name/
这里 category-name 是你为类别(Category)命名的别名。

默认行为:

  • URL结构/category/{category-name}/
  • 模板文件category.php(如果主题中不存在 category.php,WordPress 会回退到 archive.phpindex.php

2. 自定义 Category 存档页面

如果你希望为特定类别自定义存档页面的外观和行为,可以创建 category-{slug}.phpcategory-{ID}.php 文件,并在这些模板文件中自定义每个类别的展示方式。

示例:创建一个自定义的 category.php 文件

在你的主题文件夹中创建 category.php 文件,它将专门处理类别存档页面的布局。你可以根据需要修改布局、样式等。

<?php
get_header();  // 加载页头

// 获取当前类别的信息
$current_category = get_queried_object();

// 显示当前类别的名称
echo '<h1>分类:' . single_cat_title('', false) . '</h1>';

// 如果有文章,展示文章列表
if ( have_posts() ) :
    echo '<ul>';
    while ( have_posts() ) : the_post();
        echo '<li>';
        echo '<a href="' . get_the_permalink() . '">' . get_the_title() . '</a>';
        echo '</li>';
    endwhile;
    echo '</ul>';

    // 分页
    the_posts_pagination();
else :
    echo '<p>没有相关文章。</p>';
endif;

get_footer();  // 加载页脚

3. 创建针对特定类别的存档模板

除了 category.php,你还可以根据类别的 slugID 来创建专门的模板文件,定制每个类别页面的布局。

创建 category-slug.php

如果你为某个特定的类别(例如 news)想要一个独特的页面布局,可以在主题目录下创建 category-news.php 文件。这个模板将专门用于 news 类别的存档页面。

示例:category-news.php

<?php
get_header();  // 加载页头

// 获取当前类别的信息
$current_category = get_queried_object();

// 显示类别名称
echo '<h1>最新新闻</h1>';

// 如果有文章,展示文章列表
if ( have_posts() ) :
    echo '<ul>';
    while ( have_posts() ) : the_post();
        echo '<li>';
        echo '<a href="' . get_the_permalink() . '">' . get_the_title() . '</a>';
        echo '</li>';
    endwhile;
    echo '</ul>';

    // 分页
    the_posts_pagination();
else :
    echo '<p>没有最新新闻。</p>';
endif;

get_footer();  // 加载页脚

4. 使用 pre_get_posts 自定义 Category 存档查询

你可以使用 pre_get_posts 钩子来修改 Category 存档页面的查询行为,比如修改每页显示的文章数量,或者按特定的条件对文章进行排序。

示例:修改 Category 存档每页显示 10 篇文章

add_action( 'pre_get_posts', function( $query ) {
    // 确保是前端查询,且是分类存档页面
    if ( ! is_admin() && $query->is_main_query() && is_category() ) {
        $query->set( 'posts_per_page', 10 );  // 每页显示 10 篇文章
    }
} );

5. Category 存档的 URL 结构修改

你可以通过 WordPress 设置修改分类页面的 URL 结构。

步骤:

  1. 进入 WordPress 后台。
  2. 点击 设置 > 永久链接
  3. 在永久链接设置页面,找到 分类基础 项,可以自定义分类存档的前缀(默认为 /category/)。
  4. 你可以更改为任何你喜欢的结构,如 /topics/,这样类别存档的 URL 将变为:/topics/category-name/

6. 为 Category 存档页面添加特定样式

你可以通过 category.phpcategory-{slug}.php 为不同类别页面添加不同的样式。

示例:为特定类别添加 CSS 类

<body <?php body_class( 'category-' . sanitize_title( single_cat_title('', false) ) ); ?>>

这段代码会为页面的 body 元素添加一个类,名称为 category-category-name,你可以通过这个类来为不同类别的存档页面添加不同的 CSS 样式。

7. 分类页面的分页

如果文章很多,你可能需要分页功能。WordPress 默认会处理分页,你可以通过 the_posts_pagination() 函数来显示分页链接。

the_posts_pagination();

8. 自定义 Category 存档页面的标题

你可以修改分类页面的标题,使用 single_cat_title()category_description() 来显示当前分类的名称和描述。

示例:

<h1>查看分类:<?php single_cat_title(); ?></h1>
<p><?php echo category_description(); ?></p>

总结

  • 默认分类存档:WordPress 自动为每个分类创建存档页面,URL 为 /category/{category-name}/
  • 自定义分类存档页面:通过创建 category.phpcategory-{slug}.php 文件,可以定制分类存档页面的内容和布局。
  • 修改查询参数:使用 pre_get_posts 钩子可以定制每个分类存档的查询行为,例如调整每页显示的文章数量。
  • URL 结构修改:通过 设置 > 永久链接 修改分类存档的 URL 结构。

通过这些方法,你可以有效地创建并自定义 WordPress 中的分类(Category)存档页面,使其符合你网站的需求和设计。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇