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

自定义文章类型按姓氏排序后页面无法显示的技术求助

问题排查与修复方案

问题原因

你当前的代码在pre_get_posts钩子中,只要检测到是主查询(is_main_query()),就强制将查询的post_type设置为directorio-doctores。这会覆盖所有页面(Pages)的主查询逻辑,导致页面内容无法被正确加载,只能显示自定义文章类型的内容。

修复代码

将代码修改为仅针对directorio-doctores的存档页面应用排序规则:

add_action( 'pre_get_posts', 'dr_order_content' );
function dr_order_content( $query ) {
    // 仅在directorio-doctores的存档主查询中应用排序
    if ( $query->is_main_query() && $query->is_post_type_archive('directorio-doctores') ){
        $query->set( 'orderby', 'meta_value' );
        $query->set( 'meta_key', 'apellido' );
        $query->set( 'meta_type', 'CHAR' );
        $query->set( 'order', 'ASC' );
    }
    return $query;
}

关键修改说明

  • 新增$query->is_post_type_archive('directorio-doctores')条件,确保排序逻辑只作用于自定义文章类型的存档页面主查询,不会影响页面(Pages)或其他内容的查询
  • 移除了$query->set( 'post_type', 'directorio-doctores' ),因为存档页面本身默认会查询该自定义文章类型,无需强制设置

其他场景适配

如果你的自定义文章类型内容是在首页展示,可将条件替换为:

if ( $query->is_main_query() && $query->is_home() )

如果是在特定ID的页面展示(比如页面ID为123),条件替换为:

if ( $query->is_main_query() && $query->is_page(123) )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:25:24