特定のページへアクセスが来たら404にする方法【WordPress】

  • 投稿 : 2017-08-09
add_action( 'template_redirect', 'status404' );
//404を返す
function status404() {
   if ( is_author() ) {
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
  }
}

http://blog.example.com/author/ユーザー名/

例えば、上記のような「投稿者アーカイブページ」を404にしてWordpressのページ自体存在しないようにしたい場合は、上記のようなPHPをテーマのfunctions.phpに追加すればOKです。
条件をかえれば、好きなページを404にすることが可能です。

add_action( 'template_redirect', 'status404' );
//404を返す
function status404() {
   if ( is_author() ) {
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
  }
   if ( is_single(17)) {
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
  }
}

例えば、記事IDが17番の記事を404にしたい場合は、上記のように追加すればよい。

記事:is_single()
固定ページ:is_page()
検索ページ:is_search()

Wordpressの場合、自動で生成されるページもあるのでそういうのを除きたい場合にも使えるかと思う。

参考:
【WordPress】トップを固定ページにした際の2ページ目以降でステータス404を返す方法
【WordPress】特定のページへアクセスが来たらステータス404を返す
redirect - How to force a 404 on WordPress - WordPress Development Stack Exchange

スポンサーリンク