WordPressで「カスタム投稿タイプ」を作ってみよう
WordPressでは、デフォルトの「投稿」や「固定ページ」以外に、独自のコンテンツタイプを作成できます。これを「カスタム投稿タイプ」と呼びます。
私自身も最近WordPressのカスタマイズを始めたばかりで、練習の一環としてカスタム投稿タイプを作ってみました。
この記事では、カスタム投稿タイプの作り方を1行ずつ丁寧に解説します!
サンプルコード
まずは完全なコードを見てみましょう。
add_action('init', function() {
register_post_type('news', array(
'labels' => array(
'name' => 'ニュース',
'singular_name' => 'ニュース'
),
'public' => true,
'show_in_rest' => true,
'supports' => array('title','editor','thumbnail'),
));
});
コードの解説
1行目:フックの設定
add_action('init', function() {
add_action() は、WordPressの特定のタイミングで処理を実行するための関数です。
-
'init': WordPressの初期化時に実行されるフックポイント -
function() {: 無名関数の開始。ここから実際の処理を記述します
カスタム投稿タイプの登録は、WordPressが初期化されるタイミング(init)で行う必要があります。
2行目:投稿タイプの登録開始
register_post_type('news', array(
register_post_type() は、カスタム投稿タイプを登録するための関数です。
- 第1引数
'news': 投稿タイプのスラッグ(識別子)。URLやデータベースで使用されます- 小文字の英数字とアンダースコアのみ使用可能
- 20文字以内が推奨
- 第2引数
array(: 投稿タイプの設定を配列で指定します
3〜6行目:表示ラベルの設定
'labels' => array(
'name' => 'ニュース',
'singular_name' => 'ニュース'
),
labels は、管理画面に表示される名前を設定します。
-
'name': 複数形の名前(管理画面のメニューなどに表示される) -
'singular_name': 単数形の名前(「1件のニュース」などに使用)
日本語の場合は単複同形なので、同じ名前を設定することが多いです。他にも add_new(新規追加)、edit_item(編集)など、様々なラベルをカスタマイズできます。
7行目:公開設定
'public' => true,
public は、この投稿タイプを公開するかどうかを設定します。
-
true: 管理画面とフロントエンドの両方で使用可能 -
false: 管理画面でのみ使用(通常は非推奨)
trueに設定すると、以下の機能が自動的に有効になります:
- 管理画面にメニューが表示される
- フロントエンドでアーカイブページが表示できる
- 検索結果に含まれる
8行目:REST API対応
'show_in_rest' => true,
show_in_rest は、REST APIでこの投稿タイプを利用できるようにするかの設定です。
-
true: REST APIで利用可能になる -
false: 旧エディタ(クラシックエディタ)のみ対応
これをtrueにすると:
- ブロックエディタ(Gutenberg)が使える
- 外部アプリケーションからAPIでデータを取得・更新できる
現在のWordPressでは、ほとんどの場合trueに設定することが推奨されます。
9行目:サポート機能の指定
'supports' => array('title','editor','thumbnail'),
supports は、この投稿タイプで使用できる機能を配列で指定します。
-
'title': タイトル入力欄 -
'editor': 本文エディタ -
'thumbnail': アイキャッチ画像
その他の指定可能な値↓
-
'excerpt': 抜粋 -
'author': 著者 -
'comments': コメント -
'revisions': リビジョン(変更履歴) -
'custom-fields': カスタムフィールド -
'page-attributes': 並び順や親ページの設定
必要な機能だけを指定することで、管理画面がシンプルになります。
実装方法
このコードは、テーマの functions.php ファイルに記述します。
- WordPressの管理画面から「外観」→「テーマファイルエディター」を開く
もしくは任意のテキストエディタ(VSCodeなど)でfunctions.phpを開く -
functions.phpを選択 - 最下部に完成したコードを貼り付ける
- 「ファイルを更新」をクリック / エディタの場合はCtrl + Sで保存
確認方法
コードを追加後、管理画面の左メニューに「ニュース」という項目が追加されます。そこから新しい記事を作成できるようになります!


