WordPress でサイト作っていると、不要なページが出てくる。たとえば企業サイトなどを作る場合、投稿者アーカイブとかは要らない。あっても良い場合でもわざわざ投稿者アーカイブのために色々作業するのが面倒な場合、もう無しにしてしまおうということもあると思います。
つーことで、投稿者アーカイブのページなどを無効にして、もしアクセスした場合は 404 エラーページが表示されるようにする。それには、いくつか方法はあると思いますが、私は pre_get_posts で処理しています。
例えば投稿者アーカイブを無効にするには functions.php に
function custom_pre_get_posts( $query ) {
if ( is_admin() )
return;
if ( $query->is_author() && $query->is_main_query() ) {
$query->set_404();
status_header( 404 );
return;
}
}
add_action( 'pre_get_posts', 'custom_pre_get_posts' );
というコードを追加する。こうすると、投稿者アーカイブページにアクセスしても 404 エラーページが表示される。
上記コードのポイントは status_header( 404 )。$query->set_404() だけだと、404エラー用のテンプレート 404.php は呼び出されるけど、HTTPステータスコードが 200 のまま。status_header( 404 ) とすることでステータスコードが 404 になる。
ちなみに pre_get_posts で色々細かく指定する場合は、functions.php とはファイルを別にして、functions.php に
require_once( 'library/pre_get_posts.php' );
とすることが私は多いです。