【问题标题】:WordPress 3.5 Changed User.php Which Breaks Plugin, Can this function be the issue? Can it be fixed?WordPress 3.5 更改了 User.php 哪个破坏了插件,这个功能可能是问题吗?可以修复吗?
【发布时间】:2013-01-09 14:24:28
【问题描述】:

插件为 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*

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

对修复代码有什么建议吗?我找错地方了吗?是否需要其他详细信息才能有人提供帮助?

【问题讨论】:

  • 你读过吗:codex.wordpress.org/Function_Reference/get_userdata 可能会给你一些提示如何正确调用 get_userdata。
  • 谢谢。我只是在更新/玩弄插件的功能并看到了 get_userdata。我可以注释掉 $user = new StdClass 但没有人可以登录。我更新了原始帖子以在他的插件中显示代码。
  • 将新的 StdClass 行更改为 $user = new WP_User( $user ) 似乎已修复错误并允许用户登录。

标签: plugins login wordpress wordpress-3.5


【解决方案1】:

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

【讨论】:

  • 我知道不要修改核心。这就是为什么我希望重写插件中的函数。很抱歉我的帖子不清楚。
【解决方案2】:

如果您发布您正在使用的插件以及下载链接,我会查看它并查看问题所在。

【讨论】:

  • 好的。这是一个付费插件。我刚刚编辑了我的原始帖子,因为我一直在使用函数 get_userdata 并发布了插件的版本。
猜你喜欢
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
相关资源
最近更新 更多