Ultimate Memberのログインフォームでフックをかけたい

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で処理するかな。