You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress如何无需插件将最新文章移至category/archive页面底部

不用插件实现WordPress归档/分类页文章倒序排列(最新文章放底部)

当然可以!完全不需要插件就能搞定这个需求,这里有两种靠谱的方法,你可以根据自己的主题情况选择:

方法一:直接修改主题模板文件(category.php/archive.php)

如果你的主题里有单独的category.php或archive.php文件,你可以直接在这些文件里调整文章查询的排序规则:

  1. 找到模板里的文章查询部分,可能是类似WP_Query的实例,或者默认主循环前的参数设置。
  2. 如果是自定义WP_Query,修改order参数为ASC:
    $args = array(
        'post_type' => 'post',
        'orderby' => 'date',
        'order' => 'ASC' // 把原来的DESC改成ASC,实现升序排列
    );
    $custom_query = new WP_Query( $args );
    
  3. 如果主题用的是标准主循环(没有自定义查询),可以在循环开始前添加一行代码修改主查询:
    // 在 if ( have_posts() ) 之前添加
    query_posts( $query_string . '&order=ASC' );
    
    不过要注意:query_posts可能会影响其他查询逻辑,所以更推荐下面的钩子方法。

方法二:使用pre_get_posts钩子(更安全,主题更新不丢失)

这种方法不需要修改模板文件,只需要在主题的functions.php(或子主题的functions.php)里添加一段代码,就能全局修改归档/分类页的文章排序:

function reverse_archive_post_order( $query ) {
    // 判断:不是后台、是主查询、并且是分类页或归档页
    if ( !is_admin() && $query->is_main_query() && ( $query->is_category() || $query->is_archive() ) ) {
        $query->set( 'order', 'ASC' ); // 设置为升序,最新文章就会排在列表底部
    }
}
add_action( 'pre_get_posts', 'reverse_archive_post_order' );

小提示:

  • 如果你只想针对特定分类生效,可以把$query->is_category()改成$query->is_category( '你的分类slug或ID' )。
  • 一定要用子主题的functions.php来添加代码,避免主题更新后代码丢失!

内容的提问来源于stack exchange,提问作者Tonmoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:27:49