WordPressで「カスタム投稿タイプ(Custom Post Type)」を作成するとき、
「Custom Post Type UI(CPT UI)を使うべき?」「functions.phpに書いたほうがいい?」と迷う人は多いですよね。
この記事では、両者のメリット・デメリットをわかりやすく比較し、さらにCPT UI → functions.php に移行する手順も紹介します!
目次
🧩 Custom Post Type UI(CPT UI)とは?
CPT UI は、WordPress管理画面からコードを書かずに「カスタム投稿タイプ」や「カスタム分類(タクソノミー)」を作成できるプラグインです。
初心者でもボタン操作だけで設定できるため、最初に試すには非常に便利です。
✅ Custom Post Type UI のメリット
- コード不要で簡単
GUI(画面操作)で投稿タイプを作成可能。プログラム知識が不要。 - 設定変更がしやすい
投稿名やスラッグを後から修正できる。 - テーマ変更に強い
テーマを変えてもCPT設定は維持される。 - ACFとの相性が良い
Advanced Custom Fieldsと組み合わせて使うケースが多い。
❌ Custom Post Type UI のデメリット
- プラグイン依存になる
CPT UIを停止・削除すると投稿タイプが表示されなくなる。 - 細かいカスタマイズが難しい
権限設定・REST API対応などはコードの方が柔軟。 - 移行や再現が手間
ステージング環境への移行時に、設定を手動で再現する必要がある。
🧠 functions.phpで登録する方法
カスタム投稿タイプは、WordPressの register_post_type() 関数を使って、
テーマ(または子テーマ)の functions.php に直接記述しても作成できます。
✅ メリット
- コード管理ができる
Gitなどでバージョン管理が可能。テーマ内で一元管理できる。 - 細かい設定が自由
supports, rewrite, capabilitiesなどを自由に設定できる。 - プラグイン不要で軽量
余分なプラグインが不要。
❌ デメリット
- 初心者にはやや難しい
コードの書き間違いでエラーが出る可能性あり。 - テーマ依存になる
テーマ変更時には再登録が必要。 - GUIでの変更不可
投稿スラッグ変更などは手動でコードを修正する必要がある。
🧭 用途別おすすめ
| 目的 | おすすめ方法 |
|---|---|
| 初心者で試しながら作りたい | ✅ CPT UI(簡単・安全) |
| 長期運用・クライアント案件 | ✅ functions.php(安定・軽量) |
| チーム開発・Git管理 | ✅ functions.php |
| ACFと併用して設計中 | どちらでもOK(最終的にfunctions.php移行推奨) |
💡 おすすめ運用法(両方のいいとこ取り)
- 開発初期は CPT UI でGUI登録。
- 設定が固まったら、CPT UIの「コードをエクスポート」機能を使う。
- そのコードを
functions.phpに貼り付ける。 - CPT UIプラグインを削除してスッキリ!
🛠️ 実際の移行手順(CPT UI → functions.php)
① CPT UIで投稿タイプを作成
管理画面 → 「CPT UI」 → 「投稿タイプの追加」で、スラッグやラベルを設定して登録します。
② コードをエクスポート
CPT UIのメニューから「ツール → コードをエクスポート」を開きます。
すると、以下のようなコードが表示されます。
function create_post_type_books() {
register_post_type('books',
array(
'labels' => array(
'name' => '本',
'singular_name' => '本'
),
'public' => true,
'has_archive' => true,
'menu_position' => 5,
'show_in_rest' => true,
'supports' => array('title', 'editor', 'thumbnail', 'excerpt')
)
);
}
add_action('init', 'create_post_type_books');
③ コードをfunctions.phpに貼り付ける
テーマ(または子テーマ)の functions.php に上記コードを追加します。
※編集前に必ずバックアップを取りましょう。
④ CPT UIプラグインを停止・削除
functions.phpで投稿タイプが正常に動作していることを確認したら、
CPT UIプラグインを削除してOKです。
🎯 まとめ
| 項目 | CPT UI | functions.php |
|---|---|---|
| 操作の簡単さ | ◎ | △ |
| 柔軟性 | △ | ◎ |
| プラグイン依存 | あり | なし |
| テーマ変更の影響 | 受けない | 受ける |
| 長期運用向け | △ | ◎ |
✅ 初期はCPT UIでテスト → 確定後にfunctions.phpへ移行
この流れが最もおすすめです!


