広告

WordPressでカスタム投稿の個別ページを表示させないで404にする方法

WordPress
この記事は約4分で読めます。

WordPressでカスタム投稿を使ったとき、個別ページが不要なケースがあり、個別ページが404になるようにしたのですが、ハマったのでメモ。

カスタム投稿定義

function.phpに記載するか、別ファイルにしてget_template_part()で読み込みます。

下記は別ファイルにしてあります。function.phpに直接書き込む場合は、先頭の<?php を消してください。

<?php
/**
 * お知らせ
 * 投稿タイプ名 news
 *
 * @package WordPress
 * @author 渡辺光理
 */

/** カスタム投稿 */
function create_post_type() {
  register_post_type(
    'news',
    array(
      // 投稿タイプ名の定義.
      'labels'             => array(
        // 管理画面上で表示する投稿タイプ名.
        'name'          => 'お知らせへ',
        // カスタム投稿の識別名.
        'singular_name' => 'お知らせ追加',
        // 新規追加.
        'add_new'       => 'お知らせ追加',
        'all_items'     => 'お知らせ一覧',
        'search_items'  => '検索',
        'edit_item'     => '編集',
      ),
      // 投稿タイプをpublicにするか('public' => trueにしても、add_filterで404になることがある).
      'public'             => false,
      'publicly_queryable' => true,
      'show_ui'            => true,
      // アーカイブページON/OFF.
      'has_archive'        => true,
      // 'editor'を入れるとエディターが表示される.
      'supports'           => array( 'title', 'thumbnail', 'editor' ),
      // メニューアイコン.
      'menu_icon'          => 'dashicons-admin-site-alt3',
    )
  );
}
add_action( 'init', 'create_post_type' );

add_filter( 'news_rewrite_rules', '__return_empty_array' );

ポイント(register_post_type)

'public' => false,

通常は'public' =>true, ですが、’public’ => false, にすると、管理画面とフロント(公開画面)が両方ともに、非公開になります。

また、'public' =>true, でも、add_filterで404にする(下記参照)と、個別ページが404になるので、必要に応じて設定してください。

次にフロントで表示させるために、

'publicly_queryable' => true,

として、フロントエンドで post_type クエリを実行可能にします。

さらに、管理画面で表示させるために、

'show_ui' => true,

とします。

また、アーカイブでカスタム投稿を表示させるため

'has_archive' => true,

これを忘れずに入れます。

これだけでも、カスタム投稿の個別ページが表示されなくなりますが、404エラーにはなりません。

ポイント(add_filterで404にする)

カスタム投稿の個別ページが表示されないのですが、404エラーにはなりません。

そこで、add_filterを使ってカスタム投稿の個別ページを404エラーにします。

add_filter( 'news_rewrite_rules', '__return_empty_array' );

上記

news_rewrite_rules

news

は、カスタム投稿のスラッグです。register_post_typeで最初に入力したパラメータの値ですよ!

最後にパーマリンクの更新をする

管理画面>設定>パーマリンク設定 で「変更を保存」のボタンをぽちっと押します。

これでカスタム投稿のシングルページ(個別ページ)が404になると思います。