プラグインの管理画面でログインユーザ情報を取得する

このログイン周りカスタマイズでハマった。

現象

管理画面でログインユーザ情報を取得する必要があり、wp_get_current_user()をカマしたら、WordPressから「Call to undefined function wp_get_current_user」と怒られてしまった。

原因

wp_get_current_user()はプラガブル関数だから・・・。

これによると、

すべてのプラグインが読み込まれた後にプラガブル関数が定義されていない時にのみ、WordPress は組み込み済みの関数を使用します。

  • プラグインによってオーバーライドできるWordPressコアの関数
  • プラグインが読み込まれた後に読み込まれる

ということ!

回避策

プラグインが読み込まれた後に実行すればよい

「そんな都合の良い遅延処理みたいなフックなんてあるのかなぁ・・・」とネットの世界をウロウロしていたら・・・・ありがとうドク!アインシュタインはどこだい?

plugins_loaded

loaded だよ、loaded。マトリックス(by キアヌ)みたいだね!

コードはこんな感じ。

class MyPlugins{
    private $current_user;
    public function __construct(){
        //plugins_loadedでプラグインが読み込まれた後に実行する!
        add_action('plugins_loaded', array( $this, 'get_login_user' ));
    }
    public function get_login_user(){
        $this->current_user = wp_get_current_user();
    }
}

めでたくプラグインの管理画面でログインユーザ情報を取得できました!

WordPressやMT、PHPなどのコーディングが仕事の中年おじさんです。 趣味でバンド(ギター&ボーカル)もやっていて、海外ドラマ(特にSFモノ)が大好きです。 いろいろまとめておくためにブログを立ち上げまっす!MASU!。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA