我已经更新了插件,Disable Blogging, 至WordPress存储库中提供的最新版本。
一切正常。然而,我的一个用户在更新插件时遇到了一个错误。
Fatal error: 无法在中的写入上下文中使用函数返回值.../wp-content/plugins/disable-blogging/includes/functions-extra.php
在第74行
他们在另外两个自己的网站上运行这个插件,没有问题。唯一的区别是PHP版本:
出现错误的服务器是GoDaddy服务器,可能是PHP 5.4.45其他人都在数字海洋上PHP 5.6.25查看我的源代码,下面是第74行的参考代码,它是函数的一部分:
\'meta\' => array( \'class\' => empty( get_avatar( get_current_user_id(), 28 ) ) ? \'\' : \'with-avatar\', ),
但这里是该函数的完整代码。此函数仅删除管理栏中的“Howdy”问候语。
public function admin_greeting( $wp_admin_bar ) {
# Remove admin greeting in all languages
if ( 0 != get_current_user_id() ) {
$wp_admin_bar->add_menu( array(
\'id\' => \'my-account\',
\'parent\' => \'top-secondary\',
\'title\' => wp_get_current_user()->display_name . get_avatar( get_current_user_id(), 28 ),
\'href\' => get_edit_profile_url( get_current_user_id() ),
\'meta\' => array( \'class\' => empty( get_avatar( get_current_user_id(), 28 ) ) ? \'\' : \'with-avatar\', ),
) );
}
}
据我猜测,这可能是PHP 5.4的兼容性问题?我一直在开发5.6版本的插件,根据PHP,
version 5.4 is no longer being supported.
如果是这样的话,我想确认一下。通过这种方式,我可以将其转发给用户,甚至可以添加一个函数,在任何WordPress站点激活之前检查其PHP版本。
最合适的回答,由SO网友:Ethan O\'Sullivan 整理而成
如所述Dave Romsey 和JHoffmann, 我实现了一个更简单的逻辑,没有使用empty()
:
\'meta\' => array( \'class\' => empty( get_avatar( get_current_user_id(), 28 ) ) ? \'\' : \'with-avatar\', ),
现在是:
\'meta\' => array( \'class\' => ( get_avatar( get_current_user_id(), 28 ) ) ? \'with-avatar\' : \'\', ),
我还包括
return
函数结束时:
return $wp_admin_bar;
以下是完整的代码:
public function admin_greeting( $wp_admin_bar ) {
# Remove admin greeting in all languages
if ( 0 != get_current_user_id() ) {
$wp_admin_bar->add_menu( array(
\'id\' => \'my-account\',
\'parent\' => \'top-secondary\',
\'title\' => wp_get_current_user()->display_name . get_avatar( get_current_user_id(), 28 ),
\'href\' => get_edit_profile_url( get_current_user_id() ),
\'meta\' => array( \'class\' => ( get_avatar( get_current_user_id(), 28 ) ) ? \'with-avatar\' : \'\', ),
) );
return $wp_admin_bar;
}
}