【WordPress】カスタム投稿タイプを追加する方法|show_in_rest・has_archive・labelsを完全設定

カスタム投稿タイプを使うと、通常の投稿や固定ページとは別に独自のコンテンツ形式(お知らせ・実績・スタッフ紹介など)を追加できます。この記事では、register_post_type() での登録方法を、抜け漏れなく解説します。

忘れがちな3つの設定

  • show_in_rest:無いとブロックエディタ(Gutenberg)で編集できない
  • has_archive:無いと一覧ページ(アーカイブ)が作れない
  • labels:単一の label だけだと管理画面の表記が中途半端になる
スポンサーリンク

functions.php にカスタム投稿タイプを登録する

子テーマの functions.php に次のコードを追加します。

functions.php:カスタム投稿タイプの登録(抜け漏れなし)
add_action('init', function () {
  register_post_type('custom_post', array(
    'public'      => true,
    'has_archive' => true, // 一覧ページ(アーカイブ)を有効にする
    'show_in_rest' => true, // ブロックエディタ(Gutenberg)で使うために必須
    'supports'    => array('title', 'editor', 'thumbnail', 'excerpt'),
    'taxonomies'  => array('category', 'post_tag'),
    'rewrite'     => array('slug' => 'custom-post'),
    'labels'      => array(
      'name'          => 'カスタム投稿', // 管理画面メニュー等で使われる複数形
      'singular_name' => 'カスタム投稿', // 「新規追加」等で使われる単数形
      'add_new_item'  => '新規カスタム投稿を追加',
      'edit_item'     => 'カスタム投稿を編集',
    ),
  ));
});
show_in_rest を忘れると起きること
show_in_rest => true が無いと、この投稿タイプはブロックエディタで開けず、旧来のクラシックエディタにフォールバックします。現在のWordPressで新規に作る投稿タイプでは、まず必ず入れておく設定です。
登録後はパーマリンクを再保存する
投稿タイプを登録・変更したら、設定 → パーマリンクを開き、何も変えずに「変更を保存」を押してリライトルールを更新してください。これを忘れると、一覧ページ・個別ページが404になります。一覧ページの作り方や404の切り分けはカスタム投稿の一覧ページを作成する方法で詳しく解説しています。また、rewriteslug は既存の固定ページ・投稿と重複しないスラッグを選んでください(衝突すると意図しないページが表示されます)。

関連するカスタム投稿のカスタマイズ

よくある質問(FAQ)

Qregister_post_type()で最低限必要な設定は何ですか?
A第1引数の投稿タイプ名(20文字以内・英小文字とアンダースコアのみ)、第2引数の labelsnamesingular_name)、public => true が基本です。一覧ページが必要なら has_archive、ブロックエディタで使うなら show_in_rest も忘れずに設定してください。
Qカスタム投稿タイプを管理画面のメニューに表示するには?
Ashow_in_menu => true(既定で有効)で表示されます。既存メニューの下にまとめたい場合は show_in_menu => 'tools.php' のように親メニューのスラッグを指定します。menu_position でメニュー内の表示位置も調整できます。
Q登録したのに一覧ページが404になります。
Ahas_archive => true を設定しているか確認し、設定 → パーマリンクを再保存してください。それでも直らない場合はスラッグの衝突がないか確認します。

まとめ

  • 基本register_post_type()init フックで呼ぶ
  • 必須級has_archive(一覧)・show_in_rest(ブロックエディタ)
  • labels:単一の label でなく name/singular_name を含む配列で
  • 登録後:パーマリンクを再保存(忘れると404)

この4点を押さえておけば、ブロックエディタでも一覧ページでも問題なく使えるカスタム投稿タイプが作れます。