プラグインは、WordPress マルチサイト ネットワークへのログインを提供します。user.php ファイルが変更されたため、このプラグインは WP 3.5 で失敗します。/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 ) { global $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 への呼び出し*
プラグインの開発者は「休暇中」で、更新していません。彼は他の変更を待っていますが、これは修正する必要があります。
コードの修正に関する提案はありますか? 私は間違った場所を探していますか?誰かが助ける前に、他の詳細が必要ですか?