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

Visual Form Builder插件hook配置后call_user_func_array()报错求助

解决Visual Form Builder钩子添加后的Strict Standards错误

首先得明确:你写的VFB钩子代码本身是没问题的!错误提示里的call_user_func_array()问题,来自另一个名为allow_php_in_posts的插件——它的shortcode_advanced()非静态方法被错误地以静态方式调用了。

下面是具体的解决思路和步骤:

  • 先锁定错误来源
    仔细看报错信息:non-static method allow_php_in_posts::shortcode_advanced() should not be called statically,这说明问题出在allow_php_in_posts插件的代码里,和你添加的VFB钩子代码无关。你可以先暂时禁用这个插件,刷新页面看错误是否消失,验证这一点。

  • 修复allow_php_in_posts插件的调用问题
    如果你还需要使用这个插件,找到它的代码文件做以下修改:

    1. 把目标方法改成静态方法:找到shortcode_advanced()的定义,给它加上static关键字,让它支持静态调用:
      public static function shortcode_advanced() {
          // 原方法内的代码保持不变
      }
      
    2. 改用实例化调用:如果不想修改方法本身,找到调用这个方法的代码(通常是add_shortcode相关的行),改成通过类实例调用:
      // 替换原本的静态调用写法
      $php_posts_instance = new allow_php_in_posts();
      add_shortcode('对应的短代码标识', array($php_posts_instance, 'shortcode_advanced'));
      
  • 临时关闭Strict Standards报错(仅测试用)
    如果你只是想先忽略这个错误,继续测试VFB钩子的功能,可以在wp-config.php里调整报错级别:

    // 替换原有WP_DEBUG相关设置
    define('WP_DEBUG', true);
    define('WP_DEBUG_DISPLAY', false);
    define('WP_DEBUG_LOG', true);
    error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
    

    注意:这只是临时方案,不建议长期使用,最好还是修复插件的代码问题。

最后再确认下你的VFB钩子代码:
你写的filter_vfbp_after_save_entry是全局函数,完全符合钩子的回调要求,逻辑上没有问题。只要解决了另一个插件的冲突,它就能正常运行。

内容的提问来源于stack exchange,提问作者Vibration Of Life

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:58:49