WordPressのauthor問題に対応する[追記あり]

2017年5月16日Web-log・ココログ関連,WordPress,パソコン・インターネット

WordPressのデフォルトでは、著者(author)名とログインアカウントが同一になっています。そして、/?author=1と言うクエリ(URL)でアクセスすると、そのauthor名が表示されてしまいます。

この何が問題かと言うと、author名(WordPressアカウント)を知ることが出来、不正ログイン試行のヒントを与えてしまう事になります。

回避する方法を検索すると、いくつかの方法がありました。

  1. functions.phpで回避
  2. author.phpでリダイレクト
  3. MySQL DB書き換え
  4. プラグインで回避

1. functions.phpで回避

この問題を知ったのも、次のページがきっかけでした。ありがとうございます。

この方法を一番最初に試しました。ですが、上手くいきませんでした。WordPressのソースを調べたのですが、必要なhookが見当たらないのです。

2. author.phpでリダイレクト

先日、WordPressで404ページを作るの記事を書きましたが、この為だったのです。

WordPressと連携している404ページを作る

次のページで紹介があります。ありがとうございます。

author.phpでリダイレクトする方法は、このページを見つける前に思いつきました。ですが、このままではダメなのです。リダイレクトされますが、Firebugなどのブラウザデバッガで見ると、リダイレクトする前のauthor名が見えてしまいます。

著者に連絡を取ったところ、すでにこの問題には次の記事で対策されているとの事でした。

3. MySQL DB書き換え

次のページで紹介されていました。

MySQL DBを書き換える方法が一番確実です。ただし、ちょっと危険です。phpMyAdminなどで書き換えますが、慣れていない人は、きちんとバックアップしてからの作業が必要です。

wp_usersと言うテーブルを開き、編集ボタンを押します。

ニックネーム編集

user_nicenameと言う項目に、ニックネームを入れます。

ニックネーム編集と実行

編集が終わったたら、実行ボタンを押します。

ニックネーム編集後

編集が終了しました。phpMyAdminのバージョンによるかもしれませんが、user_nicenameをダブルクリックしても編集できます。

直接ニックネーム編集

この方法で、うまくいきました。日本語名でも大丈夫です。

次のページでも、実は、同じ方法で回避されていました。(後で知りました)

4. プラグインで回避

次のプラグインを入れると、表示がIDのままになり、user名が表示されなくなります。

プラグインの説明には、管理者ならuser_nicenameを編集できると書かれているのですが、マルチサイトで運用されているWordPressでないと、編集できません。おそらく、バグです。

132 public function extra_user_profile_field( $user ) {
133 
134   if ( current_user_can( 'edit_users' ) and is_network_admin() ) {

134行目の、"and"を"or"に変更すれば、シングルサイトのWordPressでもuser_nicenameを編集できるようになります。本当はプラグインの開発者に連絡を入れるべきだと思います。なので、Supportに投稿しておきました。

管理画面のユーザーあなたのプロフィールに、"User Nicename"が現れます。ココに半角英数字を入れれば大丈夫です。日本語(全角文字)だと、user_nicenameに反映されません(空欄になります)。

lh-number-user-nicename

(追記 2017-05-16 21:54)

Ver.1.02で修正されました。やはり、連絡するのは必要ですね。

Posted by お市のかた