カスタム投稿タイプを使うと、通常の投稿や固定ページとは別に独自のコンテンツ形式(お知らせ・実績・スタッフ紹介など)を追加できます。この記事では、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の切り分けはカスタム投稿の一覧ページを作成する方法で詳しく解説しています。また、
投稿タイプを登録・変更したら、設定 → パーマリンクを開き、何も変えずに「変更を保存」を押してリライトルールを更新してください。これを忘れると、一覧ページ・個別ページが404になります。一覧ページの作り方や404の切り分けはカスタム投稿の一覧ページを作成する方法で詳しく解説しています。また、
rewrite の slug は既存の固定ページ・投稿と重複しないスラッグを選んでください(衝突すると意図しないページが表示されます)。関連するカスタム投稿のカスタマイズ
よくある質問(FAQ)
Qregister_post_type()で最低限必要な設定は何ですか?
A第1引数の投稿タイプ名(20文字以内・英小文字とアンダースコアのみ)、第2引数の
labels(name・singular_name)、public => true が基本です。一覧ページが必要なら has_archive、ブロックエディタで使うなら show_in_rest も忘れずに設定してください。Qカスタム投稿タイプを管理画面のメニューに表示するには?
A
show_in_menu => true(既定で有効)で表示されます。既存メニューの下にまとめたい場合は show_in_menu => 'tools.php' のように親メニューのスラッグを指定します。menu_position でメニュー内の表示位置も調整できます。Q登録したのに一覧ページが404になります。
A
has_archive => true を設定しているか確認し、設定 → パーマリンクを再保存してください。それでも直らない場合はスラッグの衝突がないか確認します。まとめ
- 基本:
register_post_type()をinitフックで呼ぶ - 必須級:
has_archive(一覧)・show_in_rest(ブロックエディタ) - labels:単一の
labelでなくname/singular_nameを含む配列で - 登録後:パーマリンクを再保存(忘れると404)
この4点を押さえておけば、ブロックエディタでも一覧ページでも問題なく使えるカスタム投稿タイプが作れます。
