フロントエンドでなんとかがんばっていくブログ

WordPressWordPressでカスタム投稿タイプで個別ページ(詳細)を作らない方法

2020/09/30
2020/10/04

カスタム投稿タイプで記事を作るときに、記事毎に個別ページが必要ない場合があります。

例えば、

  • アーカイブページに記事一覧だけ必要
  • TOPページに一覧だけ表示したい
  • ロゴ一覧をカスタム投稿タイプで管理したい


そんな場合の対応方法です。

解決方法

register_post_type( 'custom_post_name',
  array(
  'labels' => array(
    'name' => __( 'カスタム投稿名' ),
    'singular_name' => __( 'カスタム投稿名' )
  ),
  'menu_icon' => 'dashicons-feedback',
  'supports' => array(
    'title', 'editor', 'thumbnail'
  ),
  'public' => false,
  'show_ui' => true,
  'menu_position' =>5,
  'has_archive' => true
  )
);


上記コードは、カスタム投稿タイプの設定になります。function.php とかに書くやつです。
大事なのは、

'public' => false
'show_ui' => true

の箇所。

個別ページは作らないけど、管理画面にUIは表示してね、と指定しています。

パーマリンク非表示


「Wordpress 個別ページ パーマリンク 非表示」とかで検索すると、管理画面上でstyleを編集してパーマリンクを非表示にする方法を紹介しているサイトもありますが、そちらは個別ページ自体は作られているので本来の目的とは異なります。

注意点


カスタムフィールドの作成に「Custom Field Suite」を使用している場合は少し注意が必要です。

フィールドの種類に「関連」がありますが、関連に指定する投稿タイプは 'public' => false を指定すると表示されません。一度、 'public' => true の状態で投稿タイプ指定した後に 'public' => false に変更するとうまくいくようです。

ちなみに「Advanced Cutom Fields」の「関連」では特に問題ありませんでした。