ユーザー項目の変更 その2までで、とりあえず登録/ログイン/プロフィールの変更までできました。
今回は、細かな問題点を調整していきます。
元記事
下記エントリの転載になります。
WordPressで会員制サイトを構築してみよう(エラーテキスト、バリデーションの追加)
エラーメッセージの調整
会員登録ページで何も入力せずに登録ボタンを押すと、下記のようなメッセージが表示されます。
本サイトでは「ユーザー名」を利用していないのですが、仕様上このメッセージが返るため、調整する必要があります。
また、何度も「エラー」と表示されるのは少しうるさいので、それも消してみます。
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を出力していますが、不要な空白が出力されてしまうのを、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ユーザー(管理者)のアカウントを作成するときには除外されるようになっています。
参考
下記サイト様を参考にさせていただきました。
- つながるねっとさん