插件为 WordPress 多站点网络提供登录。该插件现在在 WP 3.5 下失败,因为 user.php 文件已更改。/wp-includes/user.php 中的旧行可以重新添加,插件就可以工作了。显然,这不是一个长期的解决方案。
这是来自 user.php 的旧代码
if ( empty( $user ) )
$user = wp_get_current_user();
else
$user = new WP_User( $user );
if ( ! isset( $user->ID ) )
return false;
这是 3.5 的新代码
if ( empty( $user ) )
$user = get_current_user_id();
if ( ! $user = get_userdata( $user ) )
return false;
我是一个尝试学习 php 的初学者,所以我不确定所有的含义。但是,我认为这是导致问题的插件中的代码:
函数 get_userdata( $user_id ) { 全局 $wpdb;
if ( ! is_numeric( $user_id ) )
return false;
$user_id = absint( $user_id );
if ( ! $user_id )
return false;
$user = wp_cache_get( $user_id, 'users' ); //check to see if the cache object already has the user
if ( $user )
{
return $user; //it was in the cache
}
$user = new StdClass ();
global $XF;
XF_User_Data::fillUserData($XF->visitor, $user, $user_id);
update_user_caches($user);
return $user;
}
新的 StdClass 可以被注释掉,错误被删除,但是没有人可以登录。
我怎样才能重新编写此函数以不导致错误?
*致命错误:调用未定义的方法 stdClass::has_prop() /wp-includes/user.php*
该插件的开发人员正在“休假”,尚未更新。他正在等待其他一些更改,但是,这需要修复。
有关修复代码的任何建议?我找错地方了吗?在有人可以提供帮助之前是否需要其他详细信息?