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

如何限制WordPress自定义文章类型lessons的导航仅显示同标签内容?

解决WordPress自定义文章类型「lessons」同标签上下篇导航问题

你的代码有几个关键问题导致无法正常工作,修正方案如下:

原代码问题分析

  • 误用了不存在的自定义钩子my_post_navigation_args,WordPress控制上下篇导航的默认钩子是get_previous_post_args和get_next_post_args
  • post_type的值lessons未加引号,字符串类型必须用单/双引号包裹
  • 未定义$term变量,无法获取当前文章的course_tag标签
  • 没有限制仅针对lessons类型生效,可能干扰其他文章类型的导航

修正后的代码

// 处理上一篇文章的查询参数
add_filter('get_previous_post_args', 'lessons_adjacent_post_filter');
// 处理下一篇文章的查询参数
add_filter('get_next_post_args', 'lessons_adjacent_post_filter');

function lessons_adjacent_post_filter($args) {
    // 获取当前文章对象
    global $post;

    // 只对lessons自定义文章类型生效
    if ($post->post_type !== 'lessons') {
        return $args;
    }

    // 获取当前文章关联的course_tag标签slug
    $course_tags = wp_get_post_terms($post->ID, 'course_tag', array('fields' => 'slugs'));

    // 如果有标签,添加同标签查询规则
    if (!empty($course_tags)) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'course_tag',
                'field'    => 'slug',
                'terms'    => $course_tags,
            )
        );
        // 指定仅查询lessons类型文章
        $args['post_type'] = 'lessons';
    }

    return $args;
}

代码说明

  • 同时挂钩两个上下篇参数钩子,确保上一篇/下一篇都受规则限制
  • 通过global $post获取当前文章,先判断类型再执行逻辑,完全不影响其他文章类型
  • 用wp_get_post_terms安全获取当前文章的course_tag标签,支持同时匹配多个标签
  • 仅当文章有course_tag标签时才添加查询规则,避免无标签的文章出现导航异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:35:17