この記事は最後に更新してから1年以上経過しています。

日本語名のユーザーを登録する

説明

標準のログインID(ユーザー名)は、英数字と一部の記号の組み合わせで構成されている。一般的なシステムのログインIDはおおむねこんな感じだが、ふと「インターネット環境ならログインIDに日本語が使用できてもいいんじゃないか」と思い、実現できるか調べてみた。

ログインIDで使用できる文字を確認

とっかかりとして管理者向けの「新規ユーザーを追加」ページで実際にユーザー登録するところを確認してみると、ログインIDは sanitize_user関数の厳格ルールでサニタイズされている。使用できる文字は次の通りである。

  1. 英大小文字
  2. 数字
  3. 記号(_.-@)
  4. 半角スペース

この関数には同名のフィルターがあり、このフィルターを利用することで独自ルールでのサニタイズが可能になる。今回の目的であるログインIDで日本語を使用可能にする場合は、テーマ内のfunctions.phpに次のようなコードを記述すればよい。

add_filter( 'sanitize_user', 'allow_japanese_as_username', 10, 3 );

function allow_japanese_as_username( $username, $raw_username, $strict ) {
	if ( $strict ) {
		$username = wp_strip_all_tags( $raw_username );
		$username = remove_accents( $username );
		$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
		$username = preg_replace( '/&.+?;/', '', $username );

		$username = preg_replace( '|[^a-zA-Z0-9ぁ-ゖァ-ヺ一-龢豈-頻 _.\-@]|', '', $username );
		$username = trim( $username );
		$username = preg_replace( '|\s+|', ' ', $username );
	}
	return $username;
}

'sanitize_user'フィルターの関数はパラメータが3つで、第1パラメータがsanitize_user関数で処理したログインID、第2パラメータが処理前のログインID、第3パラメータが厳格ルールを適用するかのフラグである。sanitize_userがユーザー登録時以外にも利用されるため、第3パラメータがtrueの場合のみログインIDで使用できる文字を変更する処理を行う。具体的な処理の流れはsanitize_user関数に習っており、字種を制限する部分にひらがな、カタカナ、漢字を追加している。

  1. HTMLタグを除外する
  2. アクセント文字を除外・置き換えする
  3. URLエンコードされたマルチバイト文字を削除する
  4. HTMLエンティティ化された文字を削除する
  5. 無効な文字を削除する
  6. 前後の空白文字を削除する
  7. 内部の連続した空白文字を1つにまとめる

なおログインIDにアクセント文字を使用したい場合は、5の字種パターンの変更だけでなく、 remove_accents関数を使用しないといった調整が必要なる。

【重要】

上記のコードは日本語名のユーザーを作成しログインできたところまでは検証したが、使用しているテーマやプラグインに影響を及ぼす可能性がある。運用しているサイトに適用する場合は自己責任はもちろんだが、十分に注意してほしい。


最終更新 : 2018年05月27日 10:42


お勧め

wp_print_inline_script_tag(2021年4月19日 更新)

void wp_print_inline_script_tag( string $javascript [ , array $attributes = array() ] )
インラインJavaScriptを含むscript要素を出力する。

register_rest_route(2022年8月17日 更新)

bool register_rest_route( string $namespace, string $route [ , array $args = array() [ , bool $override = false ] ] )
REST APIのルートを登録する。

wp_determine_option_autoload_value(2024年7月22日 更新)

string wp_determine_option_autoload_value( string $option, mixed $value, mixed $serialized_value, boo l |string $autoload )
自動ロードのトリガー値を取得する。

single_tag_title(2018年5月27日 更新)

string single_tag_title( [ string $prefix = '' [ , bool $display = true ] ] )
投稿タグアーカイブページの投稿タグ名を取得し、パラメータ$displayがtrueならば表示する。$displayがfalseの場合は、文字列として返す。

home_url(2023年3月31日 更新)

string home_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のホームURLを取得する。ホームURLは、管理者ページの「設定」-「一般」の「サイトのアドレス(URL)」のこと。