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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:42:05