如何限制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
相关产品推荐
相关产品推荐

