我在WordPress上有一个网站,我的团队中有人更新了一些东西,现在该网站上有一个错误:Warning: Illegal string offset 'output_key' in /.../wp-includes/nav-menu.php
我禁用了调试消息,现在网站运行正常。我想这不是最好的解决方案。数小时的谷歌搜索和寻找这里的东西带给我一个事实,我必须告诉脚本'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行仍然显示网站上的错误。我不知道该怎么处理这一行。
2条答案
按热度按时间zbwhf8kr1#
似乎您使用的是过时版本的WordPress,它不再与PHP 7兼容。
参见从php 5.6迁移到php 7一节中关于变量处理的内容。
这意味着表达式
$items[$k]->$args['output_key']
被解释为:$items[$k]->{$args['output_key']}
($items[$k]->$args)['output_key']
这个问题似乎也在recent wordpress code中得到了修复。
要手动修复此问题,只需替换代码:
与:
您还应该考虑升级整个wordpress安装,以确保其余的代码与PHP7兼容。
ql3eal8s2#
好吧,让我们简单地过一遍:
1.点击鼠标右侧的紫色方框,你会看到“检查”选项。
1.点击inspect选项,你会在顶部看到一堆代码。
1.单击突出显示的代码旁边的三个点。
1.单击“删除元素”,操作就完成了!