WordPress のユーザー名と表示名

プラグインの機能拡張の時に WordPress のユーザー名関連について調べたのでまとめておきます。

ユーザー名に関する以下の項目が WP_USERS テーブルに入っています。

user_login
ログイン時に使う名前
display_name
表示用の名前
user_nicename
著者別の URL 用 (例: https://hetarena.com/archives/author/blogger323) に使われる名前

重要なのがログイン画面で入力する user_login です。 サイトへのアタックに使われると嫌なのでこれは知られたくないですね。 そこで表示用に display_name (管理画面上は「ブログ用の表示名」) というものがあって、これを設定しておくと投稿の表示などにはこちらが使われます。

ただ、ちょっと曲者なのが、user_nicename です。 これは user_login を元に自動的に設定され、管理画面から変えることができません。 そして、リダイレクトのテクニックを使うと訪問者にわかってしまいます。

どういうことかというとサイトの設定によっては以下の形式の URL にアクセスすると user_nicename を使った著者別 URL にリダイレクトされるのです。

https://hetarena.com/?author=1

このサイトでは author=1 だと URL には admin が表示されます。 admin と表示されるのは嫌だと思っても管理用 GUI からこれを変えることができません。 この動作があるので「ブログ用の表示名」を変えただけでは不十分であり、皆さんログイン名情報を隠すのに苦労しているようです。

そんな悩みをお持ちの方にちょっとしたテクニックをお伝えしておきます。 私の場合は逆にユーザー作成後に user_login を SQL 文で変えてしまっています。

UPDATE wp_users
SET user_login = 'himitsu'
WHERE id = 1;

ユーザー作成時のアカウント名はそのまま表示用として display_name と user_nicename に残しておけば良いわけです。 SQL 文でやらねばならないところがネックかも知れませんが…。

ちなみに user_nicename のデフォルト値ですが、WordPress Core の user.php 内 wp_insert_user() で以下のようにセットされてます。

$user_nicename = sanitize_title( $user_login );

それと「ニックネーム」は WP_USERS テーブルではなくて WP_USERMETA の方に保管されます。

なお、そもそもの話としては複雑なパスワードを使うというのが一番重要であることを最後に強調しておきたいと思います。