このログイン周りカスタマイズでハマった。
現象
管理画面でログインユーザ情報を取得する必要があり、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();
}
}
めでたくプラグインの管理画面でログインユーザ情報を取得できました!