【WordPress】カスタム投稿のアーカイブ・個別ページを生成しないようにする設定

こんにちは、nishi_talk(@nishi_talk)です。
WordPressでカスタム投稿を設定した時、アーカイブ・個別ページが自動的に生成されます。
一覧で表示するためだけに必要だったりしてアーカイブ・個別ページが不要なときにする設定をご紹介します。

投稿タイプを追加

まずはfunction.php内にカスタム投稿を追加する設定を記述します。 今回はメンバーの投稿タイプを追加します。
<?php
add_action('init', 'tmp_member_custom_post_type');
function tmp_member_custom_post_type() {
  $labels = array(
    'name'                => 'メンバー',
    'singular_name'       => 'メンバー',
    'add_new_item'        => '新しいメンバーを追加',
    'add_new'             => '新規追加',
    'new_item'            => '新しいメンバー',
    'view_item'           => 'メンバーを表示',
    'not_found'           => 'メンバーはありません',
    'not_found_in_trash'  => 'ゴミ箱にメンバーはありません。',
    'search_items'        => 'メンバーを検索',
  );
  $args = array(
    'labels'              => $labels,
    'public'              => true,
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'query_var'           => true,
    'rewrite' => array('slug' => 'member', 'with_front' => false),
    'hierarchical'        => false,
    'menu_position'       => 5,
    'has_archive'         => true,
    'yarpp_support'       => true,
    'capability_type'     => 'post',
    'supports' => array(
      'title',
      'editor',
      'thumbnail',
      'excerpt',
      'custom-fields'
    )
  );
  register_post_type('member', $args);
  flush_rewrite_rules( true );
}
?>
このままの設定だとアーカイブ・個別ページが自動的に生成されます。
生成されないように、以下のオプションの値を変更します。

ページ生成の設定

# 公開をする場合は「true」、公開しない場合は「false」
'public' => true,

# アーカイブページを表示をする場合は「true」、表示しない場合は「false」
'has_archive' => true,
‘public’の値を「false」に変更すると管理画面上からカスタム投稿画面からパーマリンクが表示されないようになります。これで個別ページが生成されないようになります。 以下のコードを記述すれば、カスタム投稿タイプを追加して個別ページ・アーカイブページを生成しないようになります。
<?php
add_action('init', 'tmp_member_custom_post_type');
function tmp_member_custom_post_type() {
  $labels = array(
    'name'                => 'メンバー',
    'singular_name'       => 'メンバー',
    'add_new_item'        => '新しいメンバーを追加',
    'add_new'             => '新規追加',
    'new_item'            => '新しいメンバー',
    'view_item'           => 'メンバーを表示',
    'not_found'           => 'メンバーはありません',
    'not_found_in_trash'  => 'ゴミ箱にメンバーはありません。',
    'search_items'        => 'メンバーを検索',
  );
  $args = array(
    'labels'              => $labels,
    'public'              => false, // ←ここを変更
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'query_var'           => true,
    'rewrite' => array('slug' => 'member', 'with_front' => false),
    'hierarchical'        => false,
    'menu_position'       => 5,
    'has_archive'         => false, // ←ここを変更
    'yarpp_support'       => true,
    'capability_type'     => 'post',
    'supports' => array(
      'title',
      'editor',
      'thumbnail',
      'excerpt',
      'custom-fields'
    )
  );
  register_post_type('member', $args);
  flush_rewrite_rules( true );
}
?>