前回までで、とりあえず登録/ログイン/プロフィールの変更までできました。
今回は、細かな問題点を調整していきます。
会員登録ページで何も入力せずに登録ボタンを押して見ると、下記のようなメッセージが表示されます。
今回作成するサイトでは「ユーザー名」を利用していないのですが、仕様上このメッセージが返るため、調整する必要があります。
また、何度も「エラー」と表示されるのは少しうるさいので、それも消してみます。
/* functions.php */ function my_user_register_valid($errors) { $rep1 = array(); $rep2 = array(); /* エラー表記を消す例 */ array_push($rep1, "<strong>エラー</strong>: "); array_push($rep2, ""); array_push($rep1, "<strong>ERROR</strong>: "); array_push($rep2, ""); /* 英語表記を変更する例 */ array_push($rep1, "Please enter your password twice."); array_push($rep2, "パスワードを2回入力してください。"); array_push($rep1, "Please enter the same password in the two password fields."); array_push($rep2, "パスワードは同じものを2回入力してください"); /* ユーザー名という表記を消す例 */ array_push($rep1, "メールアドレスを入力してください。"); array_push($rep2, '<span class="deletedmsg"></span>'); array_push($rep1, "ユーザー名"); array_push($rep2, "メールアドレス"); $custom_error = new WP_Error(); foreach ( $errors -> errors as $key => $val ) { $tmp = str_replace($rep1,$rep2,$val[0]); $custom_error -> add($key, $tmp); } return $custom_error; } add_filter( 'registration_errors', 'my_user_register_valid', 10 );
/* style.css */ .deletedmsg + br, .deletedmsg {display:none;}
内容は、arrayに格納したテキストを置換しているだけですね。
途中で “deletedmsg” というclass名を付けたHTMLタグを出力していますが、1行全置換した場合に不要な空白が出力されてしまうため、それをCSSで消しています。
※ バージョンによってもエラーの内容は変わる可能性がありますので、この部分は都度変更する必要があると思います
(この部分は つながるねっとさんを参考にしています)
プロフィールの項目に文字数/種の制限を設けてみます。
下記は、苗字(last_name)の最大文字数を50文字にし、「’」「”」を入力できないようにしています。
/* functions.php */ function my_user_update_valid($errors, $update = null, $user = null) { /* 最大文字数 */ $maxlength = 50; if(!is_admin()) { /* last_nameに使用できない文字を指定 */ if ( preg_match('/[\'\"]/', $_POST['last_name']) ) { $errors->add('empty_last_name', '苗字に「\'」「"」は利用できません'); } elseif (mb_strlen($_POST['last_name'], "UTF-8") > $maxlength ) { $errors->add('empty_last_name', '苗字は' . $maxlength . '文字以内でご入力下さい'); } } return $errors; } add_action( 'user_profile_update_errors', 'my_user_update_valid', 10 );
各ユーザー項目に対し、正規表現を書いていけばOKです。
また、adminユーザー(管理者)のアカウントを作成するときには除外されるようにしています。
下記サイト様を大変参考にさせていただきました。