作成者アーカイブを無効化する
WordPressには投稿を作成した人ごとの投稿一覧を表示する「作成者アーカイブ」(投稿者アーカイブ)という機能が標準で用意されています。複数人で運営するブログの場合は便利ですが、WordPressを活用したホームページを作成していて作成者アーカイブが不要なケースもあります。
作成者アーカイブが不要な場合に作成者アーカイブを無効化(404ページを表示)するには、functions.phpに下記のように記載します。(WordPressのサイトアドレスURL/?author=1
などでアクセスされた際にURLにユーザー名が表示される機能も無効にします)
1 2 3 4 5 6 7 8 9 10 11 |
/** * 作成者アーカイブを無効化します。(WordPressのサイトアドレスURL/?author=1 などでアクセスされた際にURLにユーザー名が表示される機能も無効にします) */ function author_archive_404( $query ) { if ( ! is_admin() && is_author() ) { $query->set_404(); status_header( 404 ); nocache_headers(); } } add_filter( 'parse_query', 'author_archive_404' ); |
補足
- 「WordPressで作成者(投稿者)アーカイブを作らない方法(リライトルールの勉強) – Gatespace's Blog」さんなどで紹介されている 「
add_filter( 'author_rewrite_rules', '__return_empty_array');
をfunctions.phpに記載し、『設定』 > 『パーマリンク設定』で『更新』ボタンを押す」、という方法でも無効にすることができます。
この方法の場合はWordPressのサイトアドレスURL/?author=1
などでアクセスすると、リダイレクトによりURLにユーザー名が表示されてから「ページが見つかりません」という表示になります。 - 「不要なページを無効化する (404)」にあるようなコードでも作成者アーカイブを無効化できます。
この方法もリダイレクトは動作しますが、「template_redirect
」というアクションは管理画面では動作しないため、is_admin()
を記載しなくても済みます。 - 技術的な補足: リダイレクト先のURLは
redirect_canonical()
により算出されたURLが使用され、作成者アーカイブの場合はget_author_posts_url()
内のget_author_permastruct()
を元にURLが決定されていますが、set_404()
しておくと作成者アーカイブのリダイレクトがされなくなります。(WordPress 4.6時点)get_author_permastruct()
は「$this->front . $this->author_base . '/%author%'
」(通常「WordPressサイトアドレスURL/author/ユーザー名
」)を返します。
更新履歴
- 2016/09/15 「不要なページを無効化する (404)」との違いを追加しました。
- 2016/09/13 初版