ワードプレスは順次プログラムが読み込まれますので、ユーザー関連の情報が取得できないフックのタイミングもございます。
フックの順番とそのタイミングで取得できる情報などを簡単に解説いたします。
ワードプレスのフックとは?
ワードプレスのPHPプログラミングで最もよく使われる仕組みとしてadd_action,add_filterという仕組みがあります。この二つのワードプレスの組み込み処理はワードプレスが投稿を出力したり、コメントを処理したり、テーマのHTMLを読みだしたりするときに任意の自分が作ったプログラムで割込みできる仕組みですこれをフックといいます。
もっと詳しく
ワードプレスの機能を自作プログラムで利用するactionとfilterの仕組み
ワードプレスのフックには順番があり、その都度使用できる関数が増えていく
ワードプレスのフックは、プラグインやテーマが読み込まれた後など、実行される順番があり、その順番の前に定義された関数が徐々に使えるようになっています。
つまり、ログインユーザーのIDの取得などは、初期のフックでは使えないことになります。
主なフックの実行順は下記のようになっています。
主なフックの順番と解説
muplugins_loaded 必ず使用するプラグインがロードされた後に実行(最も早いフックです。MUPLUGINでしか使用できません)。
registered_post_type 投稿、ページなどの概念の初期化の後です
plugins_loaded アクティブなプラグインがロードされた後となります。
setup_theme アクティブなプラグインがロードされた後でかつ有効なテーマがロードされる前です。
after_setup_theme テーマが利用できる最初のアクションフックで、テーマの functions.php ファイルが読み込まれた直後に利用できます。
init 一般的にプラグインが初期化するために使用します。このとき、ユーザーは認証されていてログインユーザー関連の関数が実行できます。
wp_loaded WordPressとプラグインテーマすべての関数が利用できる状態です。(プラグインやテーマがinitで初期化する独自関数も含めまして)
parse_request HTTPヘッダーが送信される直前となります。この後にリダイレクト等の処理を行うとエラーになります。
send_headers HTTPヘッダのカスタマイズできます。
pre_get_posts 投稿の取得クエリ実行前にクエリ変数オブジェクトを取得編集できます。
template_redirect どのテンプレートを読み込むか決定する前に実行されます。
この後各テーマのページなどのプログラムが読み込まれ実行されます。
ーー
タイトルのユーザーのログインIDを取得できる最短のフックはinit になりますね。
add_action( 'init', 'check_current_user' ); function check_current_user() { $userid = get_current_user_id(); }
WordPressワードプレスのテーマやプラグインのコーディングカスタマイズのご依頼・ご相談はワードプレスドクターまでお気軽にお送りください