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

如何在WordPress归档页获取自定义分类法location术语

WordPress嵌套分类归档页获取自定义分类location层级项方案

get_queried_object()默认仅返回主查询识别的核心查询对象,对于自定义重写实现的多分类嵌套URL结构,不会自动解析非主查询的分类段,可通过以下两种方式获取对应层级项:

方案1:直接解析URL路径匹配分类(无需修改现有规则,适配现有链接结构)

实现逻辑是拆分当前请求的URL路径,截取location标识和category标识之间的路径片段,按层级顺序匹配对应的自定义分类项:

  • 先获取当前请求的路径,拆分成分段数组
  • 定位location和category两个分段的位置,截取中间的slug段
  • 按父到子的层级顺序逐个匹配分类,避免不同父级下同slug的分类匹配错误

代码示例:

// 拆分当前请求路径
$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
$path_segments = explode( '/', trim( $request_uri, '/' ) );

// 定位两个分类标识的位置
$loc_pos = array_search( 'location', $path_segments );
$cat_pos = array_search( 'category', $path_segments );

$location_hierarchy = [];
if ( false !== $loc_pos && false !== $cat_pos && $cat_pos > $loc_pos ) {
    // 提取location层级的slug片段
    $loc_slugs = array_slice( $path_segments, $loc_pos + 1, $cat_pos - $loc_pos - 1 );
    $parent_term_id = 0;
    // 按层级顺序匹配分类,保证层级关系准确
    foreach ( $loc_slugs as $slug ) {
        $current_term = get_term_by( 'slug', sanitize_title( $slug ), 'location', [
            'parent' => $parent_term_id
        ] );
        if ( $current_term && ! is_wp_error( $current_term ) ) {
            $location_hierarchy[] = $current_term;
            $parent_term_id = $current_term->term_id;
        }
    }
}

// 调用示例:$location_hierarchy数组按父到子顺序存储location分类,索引0对应Scotland,索引1对应East Lothian
foreach ( $location_hierarchy as $loc_term ) {
    // 输出分类名/链接等操作
    echo esc_html( $loc_term->name );
}

方案2:重写规则绑定查询变量(规范实现方案,适合自定义开发的站点)

如果该嵌套URL结构是你通过自定义重写规则实现的,建议在注册规则时就将location层级的slug绑定到自定义查询变量,后续无需每次解析URL:

  • 通过query_vars钩子注册自定义查询变量,例如loc_level_1、loc_level_2
  • 添加重写规则时,用正则捕获location段的slug,映射到对应查询变量
  • 页面中直接通过get_query_var('loc_level_1')获取Scotland的slug,get_query_var('loc_level_2')获取East Lothian的slug,再通过get_term_by转换为分类对象即可

注意:如果WordPress安装在子目录,解析路径前要先剔除子目录对应的路径段,避免分段位置偏移。如果站点启用了页面缓存,建议将该逻辑挂载到template_redirect或更早的钩子执行,避免缓存导致取值异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:54:09