WordPressの「Ultimate Member」プラグインで会員サイト構築していて、ログインページ表示時に処理を行いたいことが発生!!
さて、どのように処理したらよいのか…よーく、考えたら、フォームを表示するときに難かしらのフックがあるのでは?って考えてみた。
function.phpに下記のコードを記述。$args[‘mode’]でどのフォームを表示するのか取得ができるとのこと。
add_action( 'um_before_form_is_loaded', 'my_pre_shortcode', 10, 1 ); function my_pre_shortcode( $args ) { if($args['mode']) { switch ( $args['mode'] ) { case 'login': //ここに処理を記述 break; } } }
参考:https://docs.ultimatemember.com/article/1060-umbeforeformisloaded
これでログインフォーム表示時のフックができあがり。あとはやりたい処理を記述。
会員IDを初期値で入れたいと思ったら、あれ、入らない!
↓のように設定しているが初期値が入らない!!。ちなみに、プロフィール、新規登録はOK
ってことでプラグインのコアファイルを追っていった。
「ultimate-member/includes/core/class-fields.php」の「function field_value( $key, $default = false, $data = null ) {~略~}」で初期値を表示するとかごにょごにょ処理しているようだ。
その中で、下記の判定でフォームロード時の初期値をどうするのか判定している。これによると新規登録とプロフィールはOKとのこと。
// Default Value for Registration Form and Profile Form editing if ( ! isset( $value ) && ( $this->set_mode == 'register' || $this->editing == true ) ) {
ちなみに
新規登録:$this->editing→FALSE
ログイン:$this->editing→FALSE
だった。コアファイルを変更して「$this->editing=true」としたら初期値がばっちり表示されたがこれは使えない・・・。
ちょっと腑に落ちないのだが、ログインフォームを表示したときにjavascriptで処理するかな。