Category : 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タグを出力していますが、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ユーザー(管理者)のアカウントを作成するときには除外されるようにしています。

参考

下記サイト様を大変参考にさせていただきました。

関連記事一覧