WordPressのauthor問題に対応する[追記あり]
WordPressのデフォルトでは、著者(author)名とログインアカウントが同一になっています。そして、/?author=1と言うクエリ(URL)でアクセスすると、そのauthor名が表示されてしまいます。
この何が問題かと言うと、author名(WordPressアカウント)を知ることが出来、不正ログイン試行のヒントを与えてしまう事になります。
回避する方法を検索すると、いくつかの方法がありました。
- functions.phpで回避
- author.phpでリダイレクト
- MySQL DB書き換え
- プラグインで回避
1. functions.phpで回避
この問題を知ったのも、次のページがきっかけでした。ありがとうございます。
この方法を一番最初に試しました。ですが、上手くいきませんでした。WordPressのソースを調べたのですが、必要なhookが見当たらないのです。
2. author.phpでリダイレクト
先日、WordPressで404ページを作るの記事を書きましたが、この為だったのです。
WordPressと連携している404ページを作る
次のページで紹介があります。ありがとうございます。
author.phpでリダイレクトする方法は、このページを見つける前に思いつきました。ですが、このままではダメなのです。リダイレクトされますが、Firebugなどのブラウザデバッガで見ると、リダイレクトする前のauthor名が見えてしまいます。
著者に連絡を取ったところ、すでにこの問題には次の記事で対策されているとの事でした。
3. MySQL DB書き換え
次のページで紹介されていました。
MySQL DBを書き換える方法が一番確実です。ただし、ちょっと危険です。phpMyAdminなどで書き換えますが、慣れていない人は、きちんとバックアップしてからの作業が必要です。
wp_usersと言うテーブルを開き、編集ボタンを押します。
と言う項目に、ニックネームを入れます。
編集が終わったたら、実行ボタンを押します。
編集が終了しました。phpMyAdminのバージョンによるかもしれませんが、
をダブルクリックしても編集できます。この方法で、うまくいきました。日本語名でも大丈夫です。
次のページでも、実は、同じ方法で回避されていました。(後で知りました)
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に反映されません(空欄になります)。(追記 2017-05-16 21:54)
Ver.1.02で修正されました。やはり、連絡するのは必要ですね。
ディスカッション
コメント一覧
まだ、コメントがありません