获取通知是WordPress的“WP_CN::localize被错误地调用”

mo49yndu  于 11个月前  发布在  WordPress
关注(0)|答案(4)|浏览(160)

完整信息:注意事项:WP_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
在WordPress更新到5.7.0后出现

wnvonmuf

wnvonmuf1#

好吧,因为有相当多的意见和以前的答案只是把它扔到地毯下。
是的,这是一个警告,但谁知道会发生什么,这是一个警告的原因,禁用的东西是没有解决它,有一个原因,开发人员设置为警告现在。
在我们等待插件开发者解决问题的同时,你可以通过在php中启用php_xdebug来找出问题的根源。我建议在调试后不要离开它,因为我不确定启用它的性能成本。
php_xdebug将返回一个所有受影响的文件的堆栈,从那里你可以跟踪它到问题的来源。一旦找到来源,修复是很容易的。Culpins最有可能是wp_localize_script(),它要求最后一个参数是array()
所以你会发现这样的东西:

wp_localize_script( 'handle', 'object_name', 'l10n_culprit_string' );

字符串
应将其改为:

wp_localize_script( 'handle', 'object_name', array( 'l10n_culprit_string' ) );


问题的解决方案来自here

vbopmzt1

vbopmzt12#

如果你正在使用wp5.7和php7.4,这是一个通知,但更改到php8它可能会被报告为错误。对我来说,当我改变(在我自己的代码)传递的值数组(是的,可能还需要在涉及的js中进行一些更改),一切都很好。

kh212irz

kh212irz3#

这是因为WordPress安装中的一个PHP脚本使用wp_localize_script()通过AJAX请求将一些PHP变量传递给JS脚本,这不再是好的做法。这可以在插件或自定义主题或子主题的functions.php中。如果wp_localize_script()不在子主题或自定义主题的functions.php中,请尝试以下操作:
1.备份您的网站
1.停用所有插件
1.一个接一个地重新激活它们,直到你再次收到通知
1.当通知再次出现时,这意味着您刚刚重新激活的插件以错误的方式使用了wp_localize_script()
1.如果它不是最新的,尝试更新它(如果你想):也许通知将消失
1.如果它已经是最新的,或者你不想更新它,在wp-content/plugins中搜索相应的插件文件夹
1.打开它并尝试查找调用wp_localize_script()的文件,您也可以在服务器终端上使用CLI查找文件中的字符串。例如,如果您的服务器运行在Linux上:grep -H -r“wp_localize_script()”/root/pathtopluginfolder| cut -d:-f1
1.然后,替换代码如下:
旧的应该看起来像这样:

wp_enqueue_script( 'wpdocs-my-script', 'https://url-to/my-script.js' );
wp_localize_script( 'wpdocs-my-script', 'MYSCRIPT', array(
    'ajaxUrl' => admin_url( 'admin-ajax.php' ),
    'otherParam' => 'some value',
) );

字符串
新的一个:

wp_enqueue_script( 'wpdocs-my-script', 'https://url-to/my-script.js' );
wp_add_inline_script( 'wpdocs-my-script', 'const MYSCRIPT = ' . json_encode( array(
    'ajaxUrl' => admin_url( 'admin-ajax.php' ),
    'otherParam' => 'some value',
) ), 'before' );

请注意,您需要将'before'作为第三个参数添加到wp_add_inline_script函数中。

一旦完成,通知应该不会再显示。如果是这样,请联系插件开发人员告诉他这一点,以便它可以成为下一次更新的一部分。
有关更多信息,请参阅Jules Colle在此页面上的评论:https://developer.wordpress.org/reference/functions/wp_add_inline_script/

brjng4g3

brjng4g34#

这是WordPress 5.7中出现的一个新警告。如果您不想看到它,并且仍然希望将WP_DEBUG设置为true,则可以通过在主题的functions.php中添加以下示例来禁用该消息:

add_filter('doing_it_wrong_trigger_error', function () {return false;}, 10, 0);

字符串

相关问题