1

プラグインは、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 への呼び出し*

プラグインの開発者は「休暇中」で、更新していません。彼は他の変更を待っていますが、これは修正する必要があります。

コードの修正に関する提案はありますか? 私は間違った場所を探していますか?誰かが助ける前に、他の詳細が必要ですか?

4

2 に答える 2

1

あなたが熟練した PHP プログラマーであっても、WP コアやプラグイン スクリプトを変更することは本当に悪い考えです。私の意見では、以前のバージョンにダウングレードして、プラグインの更新を待つ必要があります。このリンクを確認して、簡単に実行してください。実際、人気のある CKEditor を含む多くのプラグインがバージョン 3.5 で問題を抱えていましたが、それらは更新されており、この場合は待つのが最善の選択肢のようです. 別のアップデートを試す前に、すべてのプラグインが 3.5 と互換性があることを確認してください。

于 2012-12-23T17:47:45.030 に答える
0

使用しているプラ​​グインとそれをダウンロードするためのリンクを投稿していただければ、それを見て何が問題なのかを確認します。

于 2012-12-23T18:03:47.417 に答える