WordPressのユーザー名(ログインID)を変更する方法

WordPressでログイン時に使う「ユーザー名」は、プロフィール画面からは変更できない仕様になっています。

以前このことでつまずいてメモしていた内容を見返してみたところ、「ユーザー名(ログインID)そのもの」を変える話と、「公開される表示名」だけを変える話がごちゃまぜになっていたので、そのあたりを整理してまとめています。

ユーザー名(ログインID)と表示名(ニックネーム)は別物

WordPressのユーザーには、2つの「名前」があります。

表示名(ニックネーム)だけ変えれば良いのか、ログインID自体を変更する必要があるのかをまずは確認します。

ユーザー名(user_login)ログイン画面で入力する、いわば内部的なID。登録時に決まり、プロフィール画面からは変更できない。
表示名(ニックネーム)投稿者名として記事のバイライン(記事に表示される執筆者名)などに公開される名前。プロフィール画面のニックネーム欄から自由に変更できる。

「ユーザー名を変えたい」というのは、「投稿者名として表示されているログインIDっぽい文字列を、外から見えないようにしたい」というセキュリティ目的のこともあります。ユーザー名が外部から推測できてしまうと、あとはパスワードだけ破られればログインされてしまうため、ブルートフォース攻撃のリスクが上がるからです。

表示名だけを変えれば良い?

広告

投稿者名を隠したいだけなら、ユーザー名を変更せずとも、表示名の設定だけで済むケースがほとんどです。

  1. 管理画面で「ユーザー」→「あなたのプロフィール」を開く
  2. 「ニックネーム」欄に、公開してよい任意の文字列(日本語も可)を入力する
  3. 「ブログの表示名」のプルダウンで、入力したニックネームを選択する
  4. 「プロフィールを更新」をクリックして保存する

これで記事のバイラインなどに表示される名前は、ログインIDとは別のニックネームに切り替わります。ログインID自体は変わっていないので、ログイン時は引き続き元のユーザー名を使います。

投稿者アーカイブからユーザー名が漏れるのを防ぐ

表示名だけ変えても、投稿者アーカイブのURL(/?author=1/author/ユーザー名/)経由でユーザー名を特定できてしまう場合があります。数字のIDを1から順番に試されるだけでユーザー名が割り出せてしまうので、ここも対策しておきたいところです。

対策は大きく2通りです。

  • WP Author Slug」のようなプラグインを使い、投稿者アーカイブのスラッグをニックネームや任意の文字列に変更する
  • functions.phpにコードを追加し、?author=数字 形式でのアクセスをトップページなどへリダイレクトする

「WP Author Slug」は、有効化すると登録されている全ユーザーのニックネームが一括更新される仕組みになっており、登録ユーザー数が1000人を超えるような大規模サイトでは非推奨とされています。個人ブログ程度の規模であれば気にする必要はなさそうですが、多数のユーザーを抱えるサイトで使う場合は注意してください。

広告

後者は、たとえば次のような形で実装されることが多いようです。

functions.php
function komari_block_author_id_scan() {
  if ( is_author() && isset( $_GET['author'] ) && preg_match( '/^[0-9]+$/', $_GET['author'] ) ) {
    wp_redirect( home_url(), 301 );
    exit;
  }
}
add_action( 'template_redirect', 'komari_block_author_id_scan' );

is_author()で投稿者アーカイブかどうかを判定し、URLパラメータのauthorが数字だけの場合にトップページへリダイレクトします。

ユーザー名(ログインID)そのものを変更する3つの方法

表示名の変更だけでは足りず、ログインID自体を変えたい場合は、以下の3つの方法があります。

新規ユーザーを追加して旧ユーザーを削除する(プラグイン不要)

プラグインを使わず、管理画面上で対応できる方法です。手順は次の通り。

  1. 管理者権限で、新しいユーザー名の管理者アカウントを新規追加する(元のアカウントとは別のメールアドレスが必要)
  2. いったんログアウトし、新しいユーザーで再度ログインする
  3. 「ユーザー」一覧から、元のユーザーの行にある「削除」を選択する
  4. 削除確認画面で、必ず「すべてのコンテンツを以下のユーザーのものにする」を選び、投稿の引き継ぎ先として新しいユーザーを指定する

4番目の引き継ぎ設定を忘れると、元のユーザーが所有する投稿記事がある場合、ユーザーごと削除されてしまうため、注意してください。そのコンテンツを消去するか別のユーザーのものにするかを選んでからユーザーを削除することができるようになっています。投稿を残しておきたい場合は必ず別のユーザーに引き継がせるようにしてください。

元々登録されているメールアドレスはユーザーを削除するまで使用できません。同じメールアドレスで別のユーザーを登録しようとしても、「このメールアドレスはすでに登録されています。他のアドレスを選んでください。」と表示され、登録ができないようになっています。そのため登録されているメールアドレス以外のものを用意する必要があります。
メールアドレスを旧ユーザーと同様にしたい場合は、旧ユーザーを削除後新ユーザー側でメールアドレスの変更を行います。

ユーザーを削除してから追加する方法もありですが、管理者権限を持つ別のユーザーもしくはユーザーの登録・削除が行える権限を持つユーザーがいなければ先に削除することはできません。

この方法に限りませんが、ユーザーを登録する際には併せてニックネームも変更しておきましょう。デフォルトではユーザー名とニックネームは同じもので設定されます。特にサイト上に執筆者情報を載せる場合は、ニックネームをユーザー名とは別にして「ブログの表示名」をニックネームに変更しておくのがセキュリティ上おすすめです。

「ニックネーム」の欄にテキストを入力すると、「ブログの表示名」で選択できるようになります。

プラグインを使う(Easy Username Updaterなど)

「Easy Username Updater」や「Username Changer」といった、ユーザー名変更専用のプラグインを使う方法です。

  1. プラグインをインストールして有効化する
  2. 管理メニューに追加される専用画面(「Username Update」など)を開く
  3. 対象ユーザーの行の「update」をクリックする
  4. 「New Username」欄に新しいユーザー名を入力し、更新ボタンを押す

プラグインを有効化するだけで済むので3つの方法の中では一番手軽です。手軽な反面、サードパーティ製の小規模プラグインであることが多いジャンルなので、導入前に更新日時や対応バージョン、レビューを確認しておくと安心です。

ユーザー名の変更後にプラグインを削除しても、変更されたユーザー名はそのままです。変更後にプラグインを削除しても大丈夫です。

ログイン中の自分自身のユーザー名を変更した場合は、変更後に新しいユーザー名で再ログインする必要があります。

【プラグインページ】

プラグインを有効化すると、管理メニューのユーザーのところに「Username Updata」という項目が追加されます。

「Username Updata」をクリックするとユーザーリストが表示されます。ユーザー名を変更したいユーザーの行にある「update」をクリックしてください。

次の画面で新しいユーザー名を入力していきます。「New Username」の入力欄に新しく設定したいユーザー名を入力し、「Update Username」ボタンをクリック。

アップデートが無事完了すると上部に「Username Update!」が表示されます。これでユーザー名の変更は完了です。

ログイン中のユーザーを変更した場合は、アップデート後に別の管理画面に移動しようとするとログイン画面が表示されます。新しいユーザー名でログインできるか確認しましょう。

 データベースを直接編集する(上級者向け)

データベースを直接編集する方法もあります。データベースの操作に慣れているのであれば、この方法が手間が少なくていいと思います。

  1. 対象のデータベースを開く
  2. wp_users テーブルを開き、対象ユーザーの行の user_login 列を新しいユーザー名に書き換える
  3. あわせて user_nicename 列も変更しておく

user_nicename はURLに含められる名前で、作成者の投稿者アーカイブのURLは /author/user_nicename/ です。

user_loginと同じ値のままにしておくと、結局URLからログインIDが推測できてしまいます。ログインID・投稿者アーカイブのURL・表示名の3つをそれぞれ別の値にすることで、セキュリティ的に一段階強くなります。

ただしデータベースの直接編集は、操作を誤るとサイトが表示されなくなるなど致命的な不具合につながる可能性があります。作業前に必ずデータベースのバックアップを取り、変更内容を理解した上で慎重に進める前提の、上級者向けの方法だと思います。

まとめ

3つの方法を比べると、次のような使い分けになりそうです。

  • とにかく安全に、標準機能だけで済ませたい → 新規ユーザー追加+旧ユーザー削除
  • 手早く済ませたい、プラグイン管理に抵抗がない → 専用プラグイン
  • サーバー・データベースの操作に慣れている → データベース直接編集

そもそも「ユーザー名が他人に見えるのが気になる」というセキュリティ目的が発端であれば、ログインID自体を変更しなくても、表示名(ニックネーム)の変更と投稿者アーカイブ対策だけで十分なケースもあると思います。何のために変更したいのかを最初に切り分けてから、どの方法を選ぶか決めてみてください。

広告

カテゴリー : WordPress