gpt4 book ai didi

php - 如何修复 nav_menu.php 中的 "Illegal string offset ' output_key'"

转载 作者:行者123 更新时间:2023-12-02 00:15:23 24 4
gpt4 key购买 nike

我在 Wordpress 上有一个网站,我团队中的某个人更新了一些内容,现在该网站出现错误:

警告:/.../wp-includes/nav-menu.php 中的非法字符串偏移“output_key”

我禁用了调试消息,现在站点运行正常。我想这不是最好的解决方案。数小时的谷歌搜索和在这里寻找一些东西让我意识到我必须告诉脚本 'output_key' 是一个数组元素。


$defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item',
'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true );
$args = wp_parse_args( $args, $defaults );
$args['include'] = $items;


if ( ARRAY_A == $args['output']) {
$GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
usort($items, '_sort_nav_menu_items');
$i = 1;
foreach( $items as $k => $item ) {
$items[$k]->$args['output_key'] = $i++; //here is the error
}
}

我试图在第 1 行询问 $args 是否是一个数组。

$defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item',
'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true );
$args = wp_parse_args( $args, $defaults );
$args['include'] = $items;


if ( ARRAY_A == $args['output'] && is_array($args) ) {
$GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
usort($items, '_sort_nav_menu_items');
$i = 1;
foreach( $items as $k => $item ) {
$items[$k]->$args['output_key'] = $i++; //here is the error
}
}

但是第6行在网站上仍然显示错误。我不知道该怎么处理那条线。

最佳答案

看来您使用的是不再与 PHP 7 兼容的过时版本的 wordpress。

参见 migrating from php 5.6 to php 7 section about variable handling .

variable handling

这意味着表达式 $items[$k]->$args['output_key'] 被解释为:

  • $items[$k]->{$args['output_key']} 在 PHP 5 中
  • ($items[$k]->$args)['output_key'] 在 PHP 7 中

这个问题似乎也已在 recent wordpress code 中修复.

要手动修复问题,只需替换代码:

$items[$k]->$args['output_key'] = $i++; // here is the error

与:

$items[$k]->{$args['output_key']} = $i++; // problem solved :)

您还应该考虑升级整个 wordpress 安装以确保其余代码与 PHP7 兼容。

关于php - 如何修复 nav_menu.php 中的 "Illegal string offset ' output_key'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com