Newspaper主题单文章页相关文章未包含父分类内容求助
解决Newspaper主题相关文章包含父分类内容的方法
不用重写模板文件,通过WordPress过滤器修改主题原生相关文章的查询逻辑即可实现,步骤如下:
步骤1:在子主题的
functions.php中添加自定义函数
这个函数会获取当前文章所属的所有分类(包括子分类和所有层级的父分类),然后修改相关文章的查询参数,让它包含这些分类下的文章:function td_modify_related_posts_categories($args) { // 仅在单篇文章页面生效 if (!is_single()) { return $args; } global $post; if (!$post) { return $args; } // 获取当前文章的所有分类ID,包括父分类 $all_category_ids = array(); $categories = get_the_category($post->ID); foreach ($categories as $category) { // 添加当前子分类ID $all_category_ids[] = $category->term_id; // 获取该分类的所有父分类ID并添加 $parent_cats = get_ancestors($category->term_id, 'category'); if (!empty($parent_cats)) { $all_category_ids = array_merge($all_category_ids, $parent_cats); } } // 去重,避免重复的分类ID $all_category_ids = array_unique($all_category_ids); // 修改相关文章查询的分类参数 if (!empty($all_category_ids)) { $args['cat'] = implode(',', $all_category_ids); } return $args; } add_filter('td_related_posts_query_args', 'td_modify_related_posts_categories');步骤2:验证效果
保存functions.php后,刷新单篇文章页面,相关文章区域会同时显示当前文章子分类及所有父分类下的内容。
说明
- 用子主题修改是为了避免主题更新时自定义代码被覆盖,如果你还没使用子主题,建议先创建并启用。
- 这个方法直接利用主题原生的
td_related_posts_query_args过滤器,完全依托主题自带的相关文章系统,不需要重写single.php或loop-single.php。
内容的提问来源于stack exchange,提问作者Rajender Singh
相关产品推荐
相关产品推荐

