最近公司一个客户要把wordpress网站搬家到新vps上,我安装了最新版的php7.2环境,网站搬家过来就出现报错
Deprecated: Function create_function() is deprecated in /www/wwwroot/xxx.com/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php on line 258
原函数代码如下:
/**
*
* register widget (must be class)
*/
public static function registerWidget($widgetName){
add_action('widgets_init', create_function('', 'return register_widget("'.$widgetName.'");'));
}
要修改成:
/**
*
* register widget (must be class)
*/
public static function registerWidget($widgetName){
global $tempWidgetName;
$tempWidgetName=$widgetName;
function register_widget_name($tempWidgetName){
global $tempWidgetName;
return register_widget($tempWidgetName);
}
add_action('widgets_init', 'register_widget_name');
//add_action('widgets_init', create_function('', 'return register_widget("'.$widgetName.'");'));
}
还要重新定义一个全局的变量,不然引用不到传进来的变量值,测试了一阵子才搞定。
其他参考例子:
add_filter( 'option_page_capability_' . ot_options_id(), create_function( '$caps', "return '$caps';" ), 999 );
改成:
add_filter( 'option_page_capability_' . ot_options_id(), function($caps) {return $caps;},999);
其他插件我更新到最新版基本都OK了

