WordPressで自動生成される投稿者アーカイブを無効化する方法

WordPressでは、記事を投稿した投稿者毎のアーカイブページが自動で作成されます。

試しにWordPressで構築されているサイトで下記URLにアクセスしてみてください。
http://hogehoge.com/?author=1

するとパッとURLが置き換わり(リダイレクト)、次のようなURLになっていませんか?
http://hogehoge.com/author/ユーザー名/

これが投稿者アーカイブページです。

ちなみに「/?author=1」で表示されない場合もあります。
その場合は「/?author=2」「/?author=3」と数字をあげていって試してみてください。
それでも表示されない場合は、そのサイトは対策済みかもしれません🤔

このリダイレクト先のURLにはログイン情報(ユーザー名)が含まれています。投稿者アーカイブ自体不要なのであればセキュリティ的にも無効化しておいた方が良さそうですね。

WordPressで投稿者アーカイブを無効化する方法

functions.phpに下記コードを追記します。

add_filter( 'author_rewrite_rules', '__return_empty_array' );
function disable_author_archive() {
if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
wp_redirect( home_url( '/404.php' ) );
exit;
}
}
add_action('init', 'disable_author_archive');

記載が完了したら、ダッシュボード>設定>パーマリンク>「変更を保存」をクリックしておきましょう。(設定値は変更しなくて大丈夫です)

※「author_rewrite_rules」というリライトルールを変更するフックを使っていて、これは一度DBに保存しなければ使えない。パーマリンクを更新するとそれが行われるので、一度「変更の保存」が必要です✍️

設定が完了したら再度投稿者アーカイブのurlにアクセスすると、404エラーページが表示される+リダイレクト(=ログイン情報が含まれるURLが表示されない)ようになります◎

ちょっと興味深かった記事があったので紹介

投稿者アーカイブのURLにログイン情報が含まれる〜と書きましたが、じゃあ投稿者アーカイブページ使いたい時ってどうすれば?と思って調べていた時に見つけた記事。

隠さないよりは隠したほうがいいけど、ユーザー名ってバレてる方が一般的じゃない?それよりも基本的な対策をしっかりすべきじゃない?というお話👇

WordPress のユーザー名を隠してもセキュリティ対策に大きくは影響しない

セキュリティ対策って何すればいいですか〜ってよく聞かれるので、ぜひこちら目を通してみてください👀

RELATED POST

関連記事

【初めてのWordPress】無料で開設するWordPressの始め方
【備忘】WordPressテーマ「JIN」でのvimeo拡大表示不具合について(safari)
Event OrganiserをGutenberg(新エディタ)に対応させる方法|WordPressプラグイン