前回までで、とりあえず登録/ログイン/プロフィールの変更までできました。
今回は、細かな問題点を調整していきます。
会員登録ページで何も入力せずに登録ボタンを押して見ると、下記のようなメッセージが表示されます。
今回作成するサイトでは「ユーザー名」を利用していないのですが、仕様上このメッセージが返るため、調整する必要があります。
また、何度も「エラー」と表示されるのは少しうるさいので、それも消してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /* 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 ); |
1 2 3 | /* style.css */ .deletedmsg + br, .deletedmsg {display:none;} |
内容は、arrayに格納したテキストを置換しているだけですね。
途中で “deletedmsg” というclass名を付けたHTMLタグを出力していますが、1行全置換した場合に不要な空白が出力されてしまうため、それをCSSで消しています。
※ バージョンによってもエラーの内容は変わる可能性がありますので、この部分は都度変更する必要があると思います
(この部分は つながるねっとさんを参考にしています)
プロフィールの項目に文字数/種の制限を設けてみます。
下記は、苗字(last_name)の最大文字数を50文字にし、「’」「”」を入力できないようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* 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ユーザー(管理者)のアカウントを作成するときには除外されるようにしています。
下記サイト様を大変参考にさせていただきました。