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

如何在WordPress短代码中使用ACF?Blade模板环境

当然可以在短代码里使用ACF!你的需求完全可行,不过得调整一下代码写法——因为短代码本质是PHP函数,不能直接用Blade的{{ the_field('text') }}语法,得用ACF的原生PHP函数来获取字段值。

修改后的短代码函数

function highlight($atts) {
    // 配置短代码可选参数,允许指定目标文章ID
    $atts = shortcode_atts([
        'post_id' => get_the_ID(), // 默认使用当前页面/文章的ID
    ], $atts);

    // 用get_field获取ACF字段值(get_field返回值,适合拼接字符串;the_field会直接输出,这里不适用)
    $acf_text = get_field('text', $atts['post_id']);

    // 处理字段为空的情况,设置默认文本兜底
    $display_text = $acf_text ?: '默认文本';

    // 返回拼接好的HTML,用esc_html转义内容避免XSS风险
    return ' <div class="col-lg-6 "> <div class="highlighted"> <p class="page-title">' . esc_html($display_text) . '</p> </div> </div>';
}
add_shortcode('scbox', 'highlight');

关键说明

  • 为什么用get_field而非the_field:the_field会直接echo输出内容,而我们需要把字段值嵌入到字符串中返回,get_field刚好返回字段值,完美适配这种场景。
  • 可选的post_id参数:如果需要调用其他文章/自定义帖子的ACF字段,直接在短代码里指定即可,比如[scbox post_id="123"]。
  • esc_html安全处理:转义字段内容是WordPress开发的安全最佳实践,能防止恶意脚本注入。

Blade模板中调用短代码

Blade的{{ }}会自动转义HTML,而你的短代码返回的是HTML标签,所以要用{!! !!}来输出:

{!! do_shortcode('[scbox]') !!}

如果需要指定特定文章的字段:

{!! do_shortcode('[scbox post_id="456"]') !!}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:35:33