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移行推奨)

💡 おすすめ運用法(両方のいいとこ取り)

  1. 開発初期は CPT UI でGUI登録。
  2. 設定が固まったら、CPT UIの「コードをエクスポート」機能を使う。
  3. そのコードを functions.php に貼り付ける。
  4. 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へ移行
この流れが最もおすすめです!


💬 関連記事(内部リンクにおすすめ)