自定义分类法Country下文章按标题排序,内置分类按日期排序的问题
问题分析与修复方案
咱们一步步拆解问题哈:
钩子与函数名不匹配:你注册动作时写的是
theme_taxonomy_order,但实际定义的函数名是domino_taxonomy_order,这会导致钩子根本没法正确触发(不过看你说两类分类都按标题排,可能是代码笔误?不管怎样先把这个统一)。条件判断错误:
is_country不是WordPress的合法条件函数,要检测是否在自定义的Country分类归档页面,得用is_tax('country')——这个函数接受分类法的slug作为参数,正好对应你自定义的country分类法。多余的返回值:
pre_get_posts是动作钩子,不需要返回$query,直接修改$query对象就行,非主查询的时候直接return退出函数即可。
给你修正后的代码:
add_action( 'pre_get_posts', 'domino_taxonomy_order' ); function domino_taxonomy_order( $query ) { // 只处理主查询,非主查询直接跳过 if ( ! $query->is_main_query() ) { return; } // 仅在Country分类归档页面修改排序规则 if ( is_tax( 'country' ) ) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); } // 内置Categories分类保持默认日期排序,无需额外处理,WordPress会自动沿用默认规则 }
简单解释下:
- 先把钩子和函数名统一,确保代码能被正确触发;
- 用
is_tax('country')精准锁定自定义Country分类的归档页,只有在这里才修改排序逻辑; - 内置Categories分类因为没做任何干预,会保持WordPress默认的按发布日期降序排序(最新文章在前),完全符合你的需求。
这样修改后,Country分类下的文章会按标题升序排列,Categories分类下的文章依然按日期排序啦。
内容的提问来源于stack exchange,提问作者Maria Anagnostou
相关产品推荐
相关产品推荐

