【完全版】WordPressのauthorを見えなくする

【完全版】Wordpressのauthorを見えなくする

PR

こんにちは、こえじまです。

WordPressのauthorページ(著者別一覧ページ)を表示していて、少し気になることがあったので修正するコードを書いてみました。

/?author=1

WordPressでは、デフォルトだとURLの最後に/?author=1と打つとauthorページが表示されます。

このauthorページのURLはログインIDと一致しているため、/?author=1と入力するだけでログインIDが知られてします。

これはあまりセキュリティ上よろしくありません。

ログインIDが知られてしまうことを防ぐためのいくつかの方法がネットに転っていましたが、どれも自分の希望を満たすものではなかったので自分で書いて見ました。

調べて出てきたほとんどの方法は、authorという文字が含まれていたらhomeにリダイレクトするというものでしたが、これだと以下が気になります。

  • 記事名にauthorという文字列が含まれるとアウト
  • 投稿者の番号以上の数字を指定すると404ページが表示はされるが、URLに残り、投稿者の番号を指定した時と挙動が違う

例:投稿者が2人存在する場合
“https://koejima.com/?author=2″にアクセスすると、
“https://koejima.com/”となりますが、
“https://koejima.com/?author=3″にアクセスすると、
“https://koejima.com/?author=3″のままURLに残ります。

コード

404.phpがあることが条件ですので、無い場合は作成してください。

functions.phpに以下を追記します。

/**
 * hide author
 */
add_action( 'hide_author', function (){
    if ( is_author() ) {
        wp_redirect( home_url('/404.php') );
        exit;
    }
    elseif ( ($_SERVER['REQUEST_URI'] != '/404.php')  && is_404() ) {
        wp_redirect( home_url('/404.php') );
        exit;
    }
} );

コード解説

解説と言ってもシンプルなif文なのであまり説明するところはありません。

  • l.5 wordpressのis_author関数でauthorページかどうかを判定
  • l.6 authorページならば404.phpにリダイレクト
  • l.9 /404.phpでは無く、404の条件を満たしているとき(つまり、”https://koejima.com/aaa”など、存在しないページにアクセスしようとした時)
  • l.10 404.phpにリダイレクト

これでauthorページ、または存在しないページにアクセスしようとすると強制的に404.phpにリダイレクトされ、authorについての情報は全く得られなくなりました!

PR

コメントを残す

メールアドレスが公開されることはありません。