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

WordPress中add_action传值至do_action返回NULL问题排查

问题原因及解决方法

你犯的核心错误是混淆了WordPress中**动作(Action)和过滤器(Filter)**的用途:

  • do_action() 仅执行绑定到该动作的函数,不会返回任何函数的返回值,所以用它赋值变量得到的必然是NULL。
  • 如果需要获取函数的返回数据,必须使用过滤器体系。

具体修改步骤:

  1. 修改functions.php中的钩子注册:
    将add_action替换为add_filter(过滤器专门用于处理并返回数据):

    add_filter( 'mixedcart', 'checkoutincluyenevio', 10, 1 );
    function checkoutincluyenevio() {
        $mensaje['label'] = "Incluye Envío";
        $mensaje['price'] = null;
        $mensaje['style'] = "background-color:#e4f4fd;font-weight:initial;";
        $mensaje['class'] = "mixedcar";
        return $mensaje;
    }
    

    注:这里把优先级改为默认的10(原代码的1也可以保留,不影响功能),参数个数设为1是因为你的函数不需要接收额外参数。

  2. 修改模板中的调用代码:
    用apply_filters()替代do_action()来获取返回值:

    $checkoutincluyenevio = apply_filters( 'mixedcart', null );
    

    第二个参数是过滤器的初始值,这里传null不影响结果,因为你的函数会直接返回自定义的数组。

这样修改后,$checkoutincluyenevio就能正确获取到你定义的$mensaje数组了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:20:40