WordPress 3.5更改了User.php哪个打破了插件,这个功能可以成为问题吗?可以修复吗?

时间:2012-12-23 17:27:52

标签: plugins login wordpress wordpress-3.5

插件为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,所以我不确定所有含义。但是,我认为这是导致问题的插件中的代码:

function 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 *

该插件的开发人员正在“休假”并且尚未更新。他正在等待其他一些变化,但这需要修复。

有关修复代码的任何建议吗?我在找错了地方吗?在有人可以提供帮助之前是否需要其他详细信息?

2 个答案:

答案 0 :(得分:1)

即使您是熟练的PHP程序员,修改WP核心或任何插件脚本也是一个坏主意。在我看来,你应该降级到以前的版本并等待插件的更新。选中此link即可轻松完成。事实上,许多插件在版本3.5中存在问题,包括流行的CKEditor,但它们正在更新,在这种情况下,等待似乎是最好的选择。在尝试其他更新之前,请确保所有插件都与3.5兼容。

答案 1 :(得分:0)

如果你发布了你正在使用的插件以及下载它的链接,我会看一下它,看看问题是什么。