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插件的调用问题
如果你还需要使用这个插件,找到它的代码文件做以下修改:- 把目标方法改成静态方法:找到
shortcode_advanced()的定义,给它加上static关键字,让它支持静态调用:public static function shortcode_advanced() { // 原方法内的代码保持不变 } - 改用实例化调用:如果不想修改方法本身,找到调用这个方法的代码(通常是
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
相关产品推荐
相关产品推荐

