WordPress如何无需插件将最新文章移至category/archive页面底部
不用插件实现WordPress归档/分类页文章倒序排列(最新文章放底部)
当然可以!完全不需要插件就能搞定这个需求,这里有两种靠谱的方法,你可以根据自己的主题情况选择:
方法一:直接修改主题模板文件(category.php/archive.php)
如果你的主题里有单独的category.php或archive.php文件,你可以直接在这些文件里调整文章查询的排序规则:
- 找到模板里的文章查询部分,可能是类似
WP_Query的实例,或者默认主循环前的参数设置。 - 如果是自定义
WP_Query,修改order参数为ASC:$args = array( 'post_type' => 'post', 'orderby' => 'date', 'order' => 'ASC' // 把原来的DESC改成ASC,实现升序排列 ); $custom_query = new WP_Query( $args ); - 如果主题用的是标准主循环(没有自定义查询),可以在循环开始前添加一行代码修改主查询:
不过要注意:// 在 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
相关产品推荐
相关产品推荐

