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

WordPress Query板块无Related选项,单篇文章页需显示相关文章求助

解决WordPress单篇文章页无原生Related选项的相关文章实现方法

WordPress区块编辑器的Query区块没有原生的「相关文章」选项,你可以通过以下两种方式实现按分类/标签匹配的相关文章展示:

方法一:自定义代码实现(灵活可控)

适合有基础代码能力的用户,能精准控制匹配规则:

  1. 添加获取相关文章的函数
    打开主题的functions.php(推荐用子主题,避免主题更新覆盖代码),插入以下代码:

    function get_related_posts_by_taxonomy($post_id, $taxonomy = 'category', $limit = 3) {
        // 获取当前文章的分类/标签ID集合
        $terms = wp_get_post_terms($post_id, $taxonomy, array('fields' => 'ids'));
        
        if (empty($terms)) return false;
        
        // 构建查询参数
        $args = array(
            'post_type' => 'post',
            'posts_per_page' => $limit,
            'post__not_in' => array($post_id), // 排除当前文章
            'tax_query' => array(
                array(
                    'taxonomy' => $taxonomy,
                    'field' => 'id',
                    'terms' => $terms,
                    'operator' => 'IN'
                )
            ),
            'orderby' => 'rand', // 随机排序,可改为date按发布时间排序
            'no_found_rows' => true, // 优化查询性能
        );
        
        // 若需固定仅显示news分类的文章,替换上方tax_query为这段:
        // $args['tax_query'] = array(
        //     array(
        //         'taxonomy' => 'category',
        //         'field' => 'slug',
        //         'terms' => 'news',
        //     )
        // );
        
        $related_posts = new WP_Query($args);
        return $related_posts;
    }
    
  2. 在文章模板中调用函数
    打开单篇文章模板文件(如single.php),在需要显示相关文章的位置插入以下代码;或者在区块编辑器中添加「代码片段」/「自定义HTML」区块,切换到PHP模式插入:

    <?php
    $current_post_id = get_the_ID();
    // 按标签匹配则把第二个参数改为'post_tag'
    $related_posts = get_related_posts_by_taxonomy($current_post_id, 'category', 3);
    
    if ($related_posts->have_posts()) : ?>
        <h3>相关文章</h3>
        <ul>
            <?php while ($related_posts->have_posts()) : $related_posts->the_post(); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php endwhile; ?>
        </ul>
    <?php
    wp_reset_postdata(); // 重置查询,避免影响后续内容
    endif;
    ?>
    

方法二:无代码区块组合实现(快速上手)

适合非技术用户,用原生区块完成配置:

  • 添加「查询循环」区块,进入区块设置的「查询」面板
  • 在「选择文章依据」中选择「分类」(按标签匹配则选「标签」),然后选中目标分类(如news)
  • 找到「排除」选项,勾选「当前文章」,避免显示自身
  • 调整「显示数量」「排序方式」等参数,再用列表/网格区块美化展示样式

注意事项

  • 第三方主题建议用子主题修改代码,防止主题更新丢失自定义内容
  • SiteGround主机不影响该功能实现,只要主题支持区块编辑器或自定义代码修改即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:43:34