WordPress

【初心者向け】WordPressカスタム投稿タイプの作り方|functions.phpとプラグインを徹底比較

WordPressで「お知らせ」や「実績」を分けて管理したいと思ったことはありませんか?

通常の投稿だけでは、情報が混在してしまい運用が難しくなります。

そんなときに便利なのが「カスタム投稿タイプ」です。

この記事では、
・カスタム投稿タイプの作り方(コードあり)
・プラグインとの違い
・どちらを選ぶべきか

を初心者向けにわかりやすく解説します。

1.カスタム投稿タイプとは?

WordPressの投稿タイプは投稿・固定ページの2種類が標準です。しかし、自分で新しく投稿の種類を増やすことができます。それがカスタム投稿タイプです。

2.どんな時に使う?

通常の投稿はすべて同じ「投稿」として扱われるため、
以下のようなケースでは管理が煩雑になります。

・お知らせとブログ記事を分けたい
・制作実績だけ一覧ページを作りたい
・採用情報だけ別管理したい

このように「用途ごとに分けて管理したい場合」にカスタム投稿タイプを使用します。

例えば以下のような使い方が一般的です。

・お知らせ(news)
・制作実績(works)
・スタッフ紹介(staff)
・採用情報(recruit)

それぞれを分けることで、管理画面・URL・一覧ページを整理することができます。

3.function.phpに記述する方法

実務では、この方法が最も柔軟でよく使われます。

使用しているテーマ(推奨:子テーマ)配下に「functions.php」を作成し、
親テーマのスタイルを読み込んでおきます。

function.phpに以下を記述します。

function register_card_post_type(){
    register_post_type('add_post',[
        'label' => '追加の投稿',
        'public' => true,
        'menu_position' => 5,
        'show_in_rest' => true,
        'rewrite' => ['slug' => 'news'],
        'has_archive' => true,
        'supports' => ['title', 'editor', 'thumbnail'],
    ]); 
} 
add_action('init','register_card_post_type');

入力できたら保存しましょう。


【コードの解説】不要な方は読み飛ばしてください

① function register_card_post_type()
register_card_post_typeについては、名前は自由です。投稿タイプを登録する処理をひとまとめにしています。

② register_post_type(‘add_post’,…
register_post_typeはWordPressの関数です。このまま書いてください。

‘add_post’は第1引数です。投稿タイプの スラッグとして扱われます。
例:add_post →https://xxx/add_post/ooo

③ 配列(設定オプション)
[

パラメータ役割・設定内容
‘label’管理画面に表示される名前
‘public’公開設定。trueでサイト上に表示、falseで管理画面専用になります。
‘has_archive’一覧ページを作るかどうか。trueで一覧ページ(アーカイブが有効になります。
‘menu_position’管理画面左メニューの表示位置。見やすさ調整用のため、動作には影響しません。
‘show_in_rest’trueでブロックエディタの表示
何も書かない場合は古い投稿画面(クラシックエディタ)になります。
‘supports’この投稿タイプで、何を管理画面に表示するかを決めています。ここに書かれたものだけが、投稿の編集画面に表示され、機能として使えるようになります。
今回有効にしているのは、タイトル(title)本文(editor) 、アイキャッチ画像(thumbnail)です。
他には、抜粋(excerpt) カスタムフィールド(custom-fields)などがあります。

]);
}

⑤ add_action(‘init’, ‘register_card_post_type’);
これで実行しています。

‘init’は初期化処理です。これを書かないとWordPressの準備前に実行される可能性があり、エラーに繋がるため記述しましょう。

‘register_card_post_type’は①の際に決めた自作関数です。


wordpressの管理画面に表示することができました。

4.プラグインで表示する方法

ACFを用いた表示方法

ACFは本来編集画面にフィールドを作成・追加するものですが、バージョン6.1からカスタム投稿タイプを作成することができるようになりました。

ダウンロードしたら、サイドバーに「ACF」が追加されます。
投稿タイプをクリックしてください。

[+新規追加]から新しい投稿タイプを作成します。

複数ラベル:add_posts

単数ラベル:add_post

投稿タイプキー:add_post_2 
(add_postにしようとしたら、先ほどfunction.phpに記述した引数と同じだったため怒られてしまいました。)

複数ラベルと単数ラベルの違いは、

単数ラベル:1件を指す表示用
複数ラベル:一覧・集合を指す表示用

です。管理画面に表示される文言ですので、違和感がなければなんでも大丈夫です。

入力できたら[変更内容を保存]ボタンを押して保存してください。

一覧に追加されました。

管理画面のメニューに追加されています。

Custom Post Type UIを用いた表示方法

Custom Post Type UIは、カスタム投稿タイプを作成するための専用プラグインです。

ACFと違い、投稿タイプ作成に特化しているため、
シンプルに管理したい場合はこちらの方が向いています。

基本的な流れは以下の通りです。

Custom Post Type UIをインストール

[CPT UI]>[Add/edit post types]をクリックし、新規投稿タイプを追加へ移動します。

投稿タイプスラッグ

複数形のラベル

単数形のラベル

を入力して、[投稿タイプを追加]をクリックします。

管理画面の左メニューに新しい投稿タイプが追加されます。

これだけでカスタム投稿タイプを作成できます。

既にカスタムフィールドでACFを使っているなら、管理を一つにまとめられるACFがおすすめです。ただし、カスタム投稿の細かい設定までGUIで行いたいならCPT UIをおすすめします。

5.どちらの方が適切なのか メリット・デメリット

比較項目functions.phpプラグイン (ACF/CPT UI)
難易度中~高(PHP知識が必要)低(画面操作のみ)
サイト速度高速わずかに影響する可能性
管理のしやすさ記述ミスで消えるリスク視覚的に管理しやすい
おすすめの人サイトを計量に保ちたい人政策効率を上げたい初心者

6.よくあるエラー・注意点

投稿画面がクラシックエディタになる

「show_in_rest」をtrueにしていない場合、
ブロックエディタ(Gutenberg)が使用できません。

管理画面に表示されない

コードを記述しても表示されない場合は、
・functions.phpの記述ミス
・add_actionの書き忘れ
が原因のことが多いです。

一覧ページが404になる

「has_archive」をtrueにしているのに表示されない場合は、
パーマリンク設定を一度「保存」し直すことで解消されることがあります。

URLが意図通りにならない

rewriteのslugを設定していない場合、
投稿タイプ名がそのままURLになります。

例:
add_post → /add_post/

任意のURLにしたい場合は以下を設定します。

‘rewrite’ => [‘slug’ => ‘news’],

同じスラッグでエラーになる

既に存在する投稿タイプや固定ページと同じスラッグは使用できません。
重複するとエラーや上書きの原因になります。

プラグインとfunctions.phpの競合

同じ投稿タイプを両方で作成すると、
意図しない挙動になる場合があります。

どちらか一方に統一するようにしましょう。

7.まとめ

今回は、WordPressでカスタム投稿タイプを作成する2つの方法を解説しました。

保守性や軽量さを重視するなら:functions.php への記述

直感的な操作や管理のしやすさを重視するなら:プラグイン(ACFなど)の活用

どちらの方法を選んでも、カスタム投稿タイプを活用することで「お知らせ」「制作実績」「お客様の声」など、情報を整理して運用しやすくなるため、必要に応じて活用していきましょう。

そもそもカスタム投稿タイプとは何か?という説明はこちらの記事でしています。

ACFの使い方・フィールドの作り方を徹底解説した記事はこちら

TOP