【wordpressプラグイン開発】wp_get_current_user()でログインユーザーを取得

wordpressのプラグイン開発をする時、普段使っている関数が使えないことがあります。それは、プラグインで使うように作られた関数じゃないから使えないんです。

ログインユーザーを判別して実行させるプラグイン

今回制作するプラグインは、現在ログインしているユーザーを判別して実行させる仕様です。

本来だとwp_get_current_user()を使って簡単に取得できるんですが、プラグイン内だとwp_get_current_user()が使えなくてエラーになってしまいました。

wp_get_current_user()以外にもプラグインで利用できない関数は結構あるので、なぜかエラーが起きてると躓いたら、その関数がプラガブル関数というのものなので、公式のwikiなど確認してみてください。

単純に実行タイミングの問題ということです。

プラグインで使えない関数を使えるようにする

アクションフックのplugins_loadedでプラガブル関数が読み込まれた後に実行するようにする。

$my_plugins = new MyPlugins();
class MyPlugins
{
    //プラグインで利用できない関数はactionフック(plugins_loaded)で利用する
    public function __construct()
    {
        add_action('plugins_loaded', array( $this, 'my_special_login_user' ));
    }
    public function my_special_login_user()
    {
        $my_original_current_user = wp_get_current_user();
    }
}

$my_original_current_user = wp_get_current_user();
ここでログインユーザーの情報が取得しました。

ユーザー取得のまとめ

$my_plugins = new MyPlugins();
class MyPlugins
{
    //プラグインで利用できない関数はactionフック(plugins_loaded)で利用する
    public function __construct() {
        add_action ( 'plugins_loaded', array( $this, 'my_special_login_user' ) );
    }

    //ユーザーを判別して実行
    public function my_special_login_user() {
        $my_original_current_user = wp_get_current_user();
        if ( $my_original_current_user->user_login == "ログインユーザー名" ) {
            //特定のユーザーでのみ実行される
        }
    }
}

一度作った仕様は、後で使い回ししやすいプラグインにしておくと、どんどん自分の資産が溜まっていって仕事が早く終わるようになりますね!

タイトルとURLをコピーしました