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

如何在WordPress中将外部含do_shortcode的变量传入函数?

问题解决思路及代码示例

你的代码无法运行的核心原因是全局作用域的do_shortcode('[abc]')执行时机过早——WordPress加载流程中,全局代码会在短码注册完成前就执行,此时[abc]对应的短码处理函数还未被加载,do_shortcode只会返回原短码文本而非预期的执行结果,后续函数里引用的$cf7自然是无效值。

以下两种方案可以满足你将$cf7相关逻辑放在函数外部的需求:

方案1:延迟初始化(仅第一次调用短码时解析)

add_shortcode('xyz', 'xyz');
// 先声明全局变量,暂不赋值
$cf7 = null;

function xyz() {
    global $cf7;
    // 第一次调用短码时才执行[abc]的解析
    if (is_null($cf7)) {
        $cf7 = do_shortcode('[abc]');
    }
    return $cf7;
}

方案2:利用WordPress钩子确保时机正确

通过wp_loaded钩子,在WordPress所有核心组件(包括短码)加载完成后再执行do_shortcode:

add_shortcode('xyz', 'xyz');
$cf7 = null;

// 绑定到wp_loaded钩子,确保短码已注册
add_action('wp_loaded', function() {
    global $cf7;
    $cf7 = do_shortcode('[abc]');
});

function xyz() {
    global $cf7;
    return $cf7;
}

这两种方式都能保证[abc]短码在正确的时机被解析,同时维持你想要的变量定义逻辑位置。

内容的提问来源于stack exchange,提问作者Gø Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:36:52