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

如何在WordPress文章第一段后添加相关文章并避免重复显示

解决YARPP相关文章重复显示的问题

我明白你的困扰了——直接把yarpp_related()赋值给变量会导致重复显示,核心原因是yarpp_related()默认是直接输出内容,而非返回字符串,再加上YARPP插件可能开启了自动插入的设置,就会出现两次展示的情况。

下面是调整后的完整代码,既能实现仅在第一段后显示相关文章,又能彻底避免重复:

/** Add YARPP related posts after first paragraph **/
function insert_yarpp_after_first_paragraph( $text ) {
    // 仅在单篇文章页面生效
    if ( is_single() ) :
        // 捕获YARPP的输出(避免它直接echo内容)
        ob_start();
        // 调用YARPP并设置关键参数
        if(function_exists('yarpp_related')) {
            $related_posts_html = yarpp_related(array(
                'limit' => 2,
                'echo' => false // 核心:让函数返回HTML字符串而非直接输出
            ));
        }
        $related_posts_html = ob_get_clean();

        // 只有存在相关文章内容时才插入
        if ( !empty($related_posts_html) ) {
            $split_by = "\n";
            $insert_after = 1; // 指定在第1段后插入
            $paragraphs = explode( $split_by, $text);
            $len = count( $paragraphs );
            
            // 如果文章段落数不足1,就插在内容末尾
            if ( $len < $insert_after ) {
                $insert_after = $len;
            }
            
            // 将相关文章插入到段落数组的指定位置
            array_splice( $paragraphs, $insert_after, 0, $related_posts_html );
            
            // 重新拼接成完整内容
            $new_text = implode( $split_by, $paragraphs );
            return $new_text;
        }
    endif;
    // 非单页或无相关文章时,返回原内容
    return $text;
}
add_filter('the_content', 'insert_yarpp_after_first_paragraph');

关键调整说明:

  • 'echo' => false:这是YARPP的隐藏参数,设置后函数会返回HTML字符串,而不是直接输出内容,这样我们就能精准控制插入位置,不会提前输出导致重复。
  • 输出缓冲处理:用ob_start()和ob_get_clean()做一层兜底,确保即使YARPP的echo参数未生效,也能正确捕获内容而非直接输出。
  • 空值判断:如果没有匹配到相关文章,就不插入任何内容,保持原文章结构的完整性。

最后记得去YARPP插件的设置页面,关闭自动插入相关文章的选项(比如“在文章开头/末尾显示”),彻底杜绝重复显示的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:31