WordPressのマルチサイトのユーザー名の制限の解除
WordPressでマルチサイトで複数のサイトを運営している。特定分野に特化したサイトで、プロフィールも変更したくなり、専用のユーザーを作りたくなって作ったところ、ユーザー名にアンダースコア (_) が使えず困った。
senooken_money
のような自分の基本ユーザー名+ジャンル名のようなユーザー名を作りたかった。Twitterなどの多くのサービスではユーザー名でのアンダースコアは許容されており、これらと統一したかった。そこで、WordPressのマルチサイトのユーザー名でアンダースコアを使う方法を整理した。
まず、WordPressのユーザー名に使用できる文字は「wordpressの「ユーザー名」で使用できる文字は?」で議論されているように、シングルサイトとマルチサイトで異なっている。
シングルサイトでは、英数字と記号 (._-@)、スペース (先頭と末尾以外) を組み合わせた60文字以下の文字列となっている。
ただし、マルチサイトの場合、この制限が厳しくなっており、数字と英小文字のみしか使えない。さらに、NG文字列 (‘www’, ‘web’, ‘root’, ‘admin’, ‘main’, ‘invite’, ‘administrator’) も存在する。
特に、マルチサイトでアンダースコア (_) が使えないのが困る。「パソコンのユーザー名の形式は [A-Za-z0-9._-] で最低8文字まで可能 – Kenchant」に投稿した通り、ユーザー名の_は使えることが多い。
この文字制限はフィルターが用意されており、ユーザー側で変更することができる。以下のサイトに情報があった。
これらを参考に以下のプラグインを作成した。
一応上記ファイルをGitHubにも格納した。
シングルサイトで使用可能な文字列の判定に使われているsanitize_user
をマルチサイトのユーザー名の条件に採用することで、シングルサイトと同じユーザー名を使えるようにした。
作成したプラグインを、wp-content/mu-plugins/
に配置する。これでマルチサイトでもシングルサイトと同じく、ユーザー名にアンダースコアを使えるようになった。念のため、シングルサイトでも禁止されている$をユーザー名に入れて登録すると、エラーになるので問題ないだろう。
ひとまず解決できてよかった。
“WordPressのマルチサイトのユーザー名の制限の解除” に対して1件のコメントがあります。