在 WordPress 中,要让分类栏目里的置顶文章显示在最前面,可以通过以下几种方法实现:

方法一:使用默认功能与代码调整


WordPress 本身有文章置顶功能,默认情况下,在首页置顶文章会显示在前面,但在分类栏目中可能需要额外调整代码。

1. 确保文章已置顶


在文章编辑页面,右侧 “文档” 模块中(若未显示,点击右上角 “三个点” 图标,勾选 “文档”),找到 “状态和可见性” 区域,点击 “公开” 旁边的 “编辑”,勾选 “置顶此文章到首页”。

2. 修改分类模板文件


通常在主题的category.php文件中进行修改,若没有该文件,可从archive.php复制一份并命名为category.php。在文件中找到WP_Queryquery_posts的部分(通常是获取文章列表的查询代码),将其替换为以下代码:
收起
php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post_type' => 'post',
    'paged' => $paged,
    'ignore_sticky_posts' => 0 // 不忽略置顶文章
);
$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
    // 先显示置顶文章
    $sticky = get_option( 'sticky_posts' );
    if ( ! empty( $sticky ) ) {
        $sticky_query = new WP_Query( array(
            'post__in' => $sticky,
            'category__in' => get_queried_object_id(), // 只显示当前分类的置顶文章
            'ignore_sticky_posts' => 1
        ) );
        if ( $sticky_query->have_posts() ) {
            while ( $sticky_query->have_posts() ) {
                $sticky_query->the_post();
                // 显示文章内容,可根据主题修改
                get_template_part( 'content', get_post_format() );
            }
            wp_reset_postdata();
        }
    }

    // 再显示其他文章
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        if ( ! in_array( get_the_ID(), $sticky ) ) {
            // 显示文章内容,可根据主题修改
            get_template_part( 'content', get_post_format() );
        }
    }
    wp_reset_postdata();
} else {
    // 没有文章时的提示
    get_template_part( 'content', 'none' );
}

代码解释

 
  • ignore_sticky_posts设为0,表示不忽略置顶文章。
  • get_option( 'sticky_posts' )获取所有置顶文章的 ID。
  • 先查询并显示当前分类下的置顶文章,再显示其他非置顶文章。

方法二:使用插件实现


如果你不想修改代码,也可以使用插件来实现这一功能,例如 “Sticky Posts Order” 插件。

1. 安装并激活插件


登录 WordPress 后台,导航到 “插件” -> “添加新插件”,搜索 “Sticky Posts Order”,点击 “安装现在”,然后激活插件。

2. 设置置顶文章顺序


激活插件后,在 WordPress 后台左侧菜单会出现 “Sticky Posts” 选项。点击进入该页面,可以看到所有已设置为置顶的文章列表。通过拖动文章标题来改变文章的置顶顺序,排在越前面的文章在分类栏目中显示越靠前。该插件还支持按分类设置置顶文章,你可以选择特定的分类,然后在该分类下设置置顶文章的显示顺序。