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

Divi短代码渲染异常:添加于栏目内却在区域外显示

解决Divi中短代码渲染到栏目/区域外的问题

我一眼就看出问题所在了——你的短代码犯了WordPress开发里一个常见的小错误:直接输出HTML内容,而不是返回内容。Divi的布局渲染是有缓冲区顺序的,直接用echo输出会让你的滑块内容在Divi的栏目容器代码之前就被输出,自然就跑到布局外面去了。

修复方法:用输出缓冲区捕获内容并返回

修改你function.php里的短代码函数,把直接输出的内容用输出缓冲区(Output Buffering)捕获,最后返回捕获到的内容就行:

function show_feature_slider() {
    ob_start(); // 开启输出缓冲区,捕获后续输出内容
    $args = array( 
        'post_type' => 'featuredslider', 
        'posts_per_page' => -1, 
        'post_status' => 'publish' 
    ); 
    $the_query = new WP_Query( $args ); 
    ?>
    <div class="features-container">
        <div class="inner-container">
            <?php $index = 1; while ($the_query->have_posts()) { $the_query->the_post(); 
                $id = get_the_ID(); 
                $desc = get_field('description', $id); 
                $img_url = get_the_post_thumbnail_url(); 
            ?>
            <div class="feature feature-<?php echo $index ?>">
                <div class="featured-image">
                    <img src="<?php echo esc_url($img_url); ?>"/>
                </div>
                <div class="featured-description">
                    <?php echo esc_html($desc); ?>
                </div>
            </div>
            <?php $index = $index + 1; } ?>
        </div>
    </div>
    <?php
    wp_reset_postdata();
    return ob_get_clean(); // 取出缓冲区内容并关闭缓冲区,将内容返回给短代码调用处
}
add_shortcode('feature-slider', 'show_feature_slider');

额外优化提示

  • 我还给你加了esc_url()和esc_html()做内容转义,这是WordPress开发的安全最佳实践,能避免潜在的XSS风险。
  • 保存修改后,记得清空WordPress缓存和Divi的静态缓存,再刷新前端页面,就能看到滑块乖乖待在指定的栏目区域里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:17:42