スポンサーリンク

WP情報

ユーザー登録時のアクションフックについて

Posted on

結構マニアック。かつ、個人用ですが、調べたのでメモ。

・register_form・・・新規ユーザー登録フォームの終わり直前で実行する。
・register_post・・・新規ユーザー登録リクエストが処理される前に実行する。
・user_register・・・ユーザーのプロフィールを新規追加する際に実行する。
(アクション関数引数: ユーザー ID)

以上はWordPress Codex 日本語版から引用ですが、
実際にどこから呼ばれているのか?を調べました。

どうして調べたかというと、
「register_post」と「user_register」が
どちらが先で呼ばれているのか?と、
どれくらい呼ばれるタイミングが違うのか?
を知りたかったのがキッカケです。

■以下、wordpress3.1.2で確認
・register_form・・・wp-login.phpの523行目。
ユーザー名とメールアドレスのフォームは配置後に呼んでいます。

・register_post・・・wp-login.phpの317行目。
ユーザー名とメールアドレスのエラーチェック後。
ユーザーを行う登録前に呼んでいます。

・user_register・・・wp-includes/user.phpの1521行目。
ユーザーメタも含め完全にユーザー登録後に呼んでいます。
ちなみに、既にユーザーIDが有る場合(=更新時)は
これを呼ぶ代わりに「profile_update」を呼んでいます。

結論としては
「register_post」→ユーザー登録(wp_create_user関数)→「user_register」
ということになります。

尚、調べてて知ったのは
「user_register」に関してはリファレンス通り
ユーザーIDが引数として入ってきているんですが、
「register_post」でも
・sanitize_user関数で返られたユーザー名。
・user_registration_emailフィルターフックを通った後のメールアドレス。
・エラーチェックで引っかかった場合のWP_Error配列クラス
が引数として渡ってきているみたいです。(チェックまではしてませんが)

2011/07/22 追記
触る機会が有り、引数が渡ってきていることを確認しました。
尚、引数が複数の場合
add_action( ‘register_post’, 関数名, 優先度, パラメータ数 );
とパラメータ引数が省略できないので注意してください。
(今回の場合は3になります。)

あと、WP_Errorは配列ではなくクラスでした。

[`evernote` not found]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

SPAM対策 * Time limit is exhausted. Please reload CAPTCHA.