目次
WordPressにおけるカスタム投稿タイプとは
WordPressは、その柔軟性と拡張性により、世界中で多くのウェブサイトに採用されております。標準で提供される「投稿(Posts)」や「固定ページ(Pages)」といった機能は、ブログ記事や静的なコンテンツを管理する上で非常に有用でございますが、特定の目的を持ったコンテンツ、例えば「商品情報」「イベント情報」「ポートフォリオ作品」「不動産物件」などを管理する際には、これらの標準機能だけでは表現しきれない構造や機能が必要となることがございます。
このような場合に活躍するのが「カスタム投稿タイプ(Custom Post Type)」でございます。カスタム投稿タイプとは、WordPressの基本的なコンテンツタイプである「投稿」や「固定ページ」とは別に、独自のコンテンツタイプを定義できる機能でございます。これにより、ウェブサイトの目的に合わせて、より適切かつ構造的にコンテンツを分類・管理することが可能となります。

カスタム投稿タイプの必要性とメリット
カスタム投稿タイプを導入することで、以下のような多岐にわたるメリットを享受することが可能でございます。
- コンテンツの構造化と管理の効率化: 例えば、ECサイトであれば「商品」、イベントサイトであれば「イベント」という専用の投稿タイプを作成することで、それぞれのコンテンツを独立して管理し、必要な情報をカスタムフィールドで追加できるようになります。これにより、管理画面が整理され、コンテンツの入力や更新作業が格段に効率化されます。
- ユーザーエクスペリエンスの向上: サイト訪問者にとっても、構造化されたコンテンツは理解しやすく、目的の情報にたどり着きやすくなります。例えば、商品一覧ページやイベントカレンダーなど、特定のコンテンツタイプに特化した表示形式を提供できるようになります。
- SEOへの貢献: 構造化されたコンテンツは、検索エンジンがサイトの内容を理解しやすくなるため、SEO(検索エンジン最適化)においても有利に働く可能性がございます。また、特定のキーワードに特化したコンテンツ群を作成しやすくなります。
- 開発の柔軟性: 開発者は、カスタム投稿タイプを基盤として、独自のテンプレートや機能を実装することが容易になります。これにより、WordPressサイトの可能性を最大限に引き出し、より高度なウェブアプリケーションを構築することも可能でございます。
カスタム投稿タイプの登録方法
カスタム投稿タイプをWordPressに登録する方法は、主に「プラグインを利用する方法」と「コードを記述する方法」の2種類がございます。それぞれの方法について詳しく解説いたします。
プラグインを利用する方法
WordPress初心者の方や、コードの記述に不慣れな方には、プラグインを利用する方法が最も手軽でございます。代表的なプラグインとしては「Custom Post Type UI (CPT UI)」や「Advanced Custom Fields (ACF)」などが挙げられます。これらのプラグインは、直感的なインターフェースを通じて、カスタム投稿タイプの作成や設定を簡単に行うことができます。
Custom Post Type UI (CPT UI) を用いた登録手順
CPT UIは、カスタム投稿タイプとカスタムタクソノミーの登録に特化した非常に強力なプラグインでございます。以下の手順で登録を進めることができます。
- WordPressの管理画面にログインし、「プラグイン」→「新規追加」へ移動いたします。
- 検索ボックスで「Custom Post Type UI」と検索し、インストール後、有効化いたします。
- 有効化後、管理画面のサイドバーに「CPT UI」というメニューが追加されますので、「投稿タイプを追加/編集」を選択いたします。
- 「投稿タイプスラッグ」「複数形ラベル」「単数形ラベル」など、基本的な情報を入力いたします。スラッグはURLで使用されるため、半角英数字で簡潔なものにすることをお勧めいたします。
- 「設定」セクションでは、カスタム投稿タイプの表示方法(管理画面でのアイコン、メニュー表示位置など)や、サポートする機能(タイトル、エディター、アイキャッチ画像、カスタムフィールドなど)を細かく設定できます。
- 必要な設定が完了いたしましたら、「投稿タイプを追加」ボタンをクリックして保存いたします。
これにより、管理画面のサイドバーに新しいカスタム投稿タイプのメニューが表示され、通常の投稿と同様にコンテンツを追加・管理できるようになります。
コードを記述する方法
より細かな制御を行いたい場合や、プラグインの数を最小限に抑えたい場合には、テーマのfunctions.phpファイルに直接コードを記述してカスタム投稿タイプを登録する方法がございます。この方法では、WordPressのregister_post_type()関数を使用いたします。

register_post_type()の基本的なコード例
以下のコードは、カスタム投稿タイプ「商品(product)」を登録する際の基本的な記述例でございます。このコードを、ご利用のテーマのfunctions.phpファイルに追加いたします。

function create_custom_post_type() {
$labels = array(
'name' => _x( '商品', 'Post Type General Name', 'textdomain' ),
'singular_name' => _x( '商品', 'Post Type Singular Name', 'textdomain' ),
'menu_name' => __( '商品', 'textdomain' ),
'name_admin_bar' => __( '商品', 'textdomain' ),
'archives' => __( '商品アーカイブ', 'textdomain' ),
'attributes' => __( '商品属性', 'textdomain' ),
'parent_item_colon' => __( '親商品:', 'textdomain' ),
'all_items' => __( 'すべての商品', 'textdomain' ),
'add_new_item' => __( '新しい商品を追加', 'textdomain' ),
'add_new' => __( '新規追加', 'textdomain' ),
'new_item' => __( '新しい商品', 'textdomain' ),
'edit_item' => __( '商品を編集', 'textdomain' ),
'update_item' => __( '商品を更新', 'textdomain' ),
'view_item' => __( '商品を表示', 'textdomain' ),
'view_items' => __( '商品一覧', 'textdomain' ),
'search_items' => __( '商品を検索', 'textdomain' ),
'not_found' => __( '商品が見つかりませんでした', 'textdomain' ),
'not_found_in_trash' => __( 'ゴミ箱に商品はありません', 'textdomain' ),
'featured_image' => __( '商品画像', 'textdomain' ),
'set_featured_image' => __( '商品画像を設定', 'textdomain' ),
'remove_featured_image' => __( '商品画像を削除', 'textdomain' ),
'use_featured_image' => __( '商品画像として使用', 'textdomain' ),
'insert_into_item' => __( '商品に挿入', 'textdomain' ),
'uploaded_to_this_item' => __( 'この商品にアップロード', 'textdomain' ),
'items_list' => __( '商品リスト', 'textdomain' ),
'items_list_navigation' => __( '商品リストナビゲーション', 'textdomain' ),
'filter_items_list' => __( '商品リストをフィルタリング', 'textdomain' ),
);
$args = array(
'label' => __( '商品', 'textdomain' ),
'description' => __( 'ウェブサイトの商品情報', 'textdomain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'revisions' ),
'taxonomies' => array( 'category', 'post_tag' ), // カテゴリーやタグをサポートする場合
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5, // 管理画面メニューでの表示位置
'menu_icon' => 'dashicons-products', // 管理画面メニューのアイコン
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
'show_in_rest' => true, // Gutenbergエディタで利用可能にする
);
register_post_type( 'product', $args );
}
add_action( 'init', 'create_custom_post_type' );
このコードでは、$labels配列で管理画面に表示される様々なテキストを設定し、$args配列でカスタム投稿タイプの詳細な挙動(サポートする機能、アーカイブページの有無、管理画面での表示設定など)を定義しております。特に'supports'配列では、タイトル、エディター、アイキャッチ画像、カスタムフィールドなど、投稿で利用できる機能を指定いたします。
カスタム投稿タイプのコンテンツ作成と表示
カスタム投稿タイプを登録した後は、コンテンツを作成し、ウェブサイト上に表示させる必要がございます。
カスタムフィールドとの連携
カスタム投稿タイプの真価は、カスタムフィールドと組み合わせることで最大限に発揮されます。例えば、商品情報であれば「価格」「在庫数」「SKU」、イベント情報であれば「開催日時」「場所」「参加費用」など、標準のエディターでは入力しにくい構造的なデータを管理するためにカスタムフィールドを利用いたします。
カスタムフィールドの管理には「Advanced Custom Fields (ACF)」プラグインが非常に強力でございます。ACFを使用することで、GUIを通じてテキストフィールド、画像フィールド、リピーターフィールドなど、多様なフィールドタイプを簡単に作成し、特定のカスタム投稿タイプに関連付けることが可能となります。これにより、コンテンツ入力者は、決められた形式で必要な情報を確実に入力できるようになります。
フロントエンドでの表示設定
カスタム投稿タイプのコンテンツをサイト訪問者向けに表示するためには、WordPressのテンプレート階層を理解し、適切なテンプレートファイルを作成する必要がございます。
- アーカイブページ: すべての商品一覧ページやイベント一覧ページなど、カスタム投稿タイプの投稿を一覧表示するページには、
archive-{post_type}.phpという名前のテンプレートファイルが適用されます。例えば、「product」というカスタム投稿タイプであれば、archive-product.phpを作成いたします。このファイルがない場合は、archive.php、index.phpなどがフォールバックとして使用されます。 - 単一ページ: 個々の商品詳細ページやイベント詳細ページなど、カスタム投稿タイプの個別の投稿を表示するページには、
single-{post_type}.phpという名前のテンプレートファイルが適用されます。例えば、「product」であれば、single-product.phpを作成いたします。このファイルがない場合も、single.php、index.phpなどがフォールバックとして使用されます。
これらのテンプレートファイル内で、WordPressループを使用してカスタム投稿タイプのコンテンツを取得し、カスタムフィールドで入力された情報を表示することで、独自のレイアウトを持つページを構築することが可能でございます。

カスタム投稿タイプ運用におけるヒントとベストプラクティス
カスタム投稿タイプを効果的に運用するためには、いくつかのヒントとベストプラクティスがございます。
適切な命名規則の選定
カスタム投稿タイプのスラッグは、一度設定すると変更が難しい場合がございます。そのため、コンテンツの内容を正確に表し、将来的な拡張性も考慮した、簡潔かつ分かりやすい命名規則を採用することが重要でございます。例えば、複数形ではなく単数形のスラッグ(例: product, event)を使用することが一般的でございます。
カスタムタクソノミーとの組み合わせ
カスタム投稿タイプは、カスタムタクソノミー(カスタム分類)と組み合わせることで、さらに強力なコンテンツ管理が可能となります。例えば、「商品」カスタム投稿タイプに対して、「ブランド」や「カテゴリ」といったカスタムタクソノミーを作成することで、商品を多角的に分類し、フィルタリング機能などを実装できるようになります。カスタムタクソノミーも、register_taxonomy()関数を使用するか、CPT UIプラグインで登録できます。
パーマリンク設定の確認
カスタム投稿タイプを新規に登録した際、またはスラッグを変更した際には、WordPressの「設定」→「パーマリンク」ページにアクセスし、何も変更せずに「変更を保存」ボタンをクリックしてパーマリンク設定を再構築(フラッシュ)することが非常に重要でございます。これを怠ると、カスタム投稿タイプのアーカイブページや単一ページが「404 Not Found」エラーとなることがございます。
検索機能への対応
デフォルトでは、WordPressの検索機能は「投稿」と「固定ページ」のみを対象とすることが多いでございます。カスタム投稿タイプのコンテンツも検索対象に含めたい場合は、検索フォームのカスタマイズや、pre_get_postsアクションフックを利用して、検索クエリを変更する必要がございます。

よくある問題と解決策
カスタム投稿タイプを扱う上で遭遇しやすい問題とその解決策についてご案内いたします。
パーマリンクが正しく機能しない場合
カスタム投稿タイプのページにアクセスすると「404 Not Found」エラーが表示される場合、パーマリンク設定の再構築が不足している可能性が高いでございます。
- 解決策: WordPress管理画面の「設定」→「パーマリンク」へ移動し、現在の設定を何も変更せずに「変更を保存」ボタンを一度クリックしてください。これにより、パーマリンクルールが再生成され、問題が解決することがほとんどでございます。
管理画面に表示されない場合
カスタム投稿タイプを登録したにもかかわらず、管理画面のサイドバーにメニューが表示されない場合は、コードまたはプラグインの設定に誤りがある可能性がございます。
- 解決策(コードの場合):
register_post_type()の$args配列内で、'public' => trueおよび'show_ui' => trueが設定されていることを確認してください。また、add_action( 'init', 'create_custom_post_type' );が正しく記述されているか、関数名が重複していないかなどもご確認ください。 - 解決策(プラグインの場合): プラグインの設定画面で、カスタム投稿タイプが有効化されているか、表示設定が適切に行われているかをご確認ください。
テンプレートが適用されない場合
カスタム投稿タイプのコンテンツが表示されるものの、期待するデザインやレイアウトが適用されない場合、テンプレートファイルの命名規則や配置に問題がある可能性がございます。
- 解決策:
archive-{post_type}.phpやsingle-{post_type}.phpといったファイル名が正確であるか、そして現在のテーマのルートディレクトリ、または子テーマのルートディレクトリに正しく配置されているかをご確認ください。また、テンプレートファイル内でカスタムフィールドの値を取得するコードが正しいかどうかも重要でございます。
よくある質問(Q&A)
Q1: カスタム投稿タイプはSEOに影響しますか?
A1: はい、適切に実装されたカスタム投稿タイプはSEOに良い影響を与える可能性がございます。コンテンツが構造化され、特定のテーマに特化した情報を効率的に提供できるようになるため、検索エンジンがサイトの内容をより正確に理解しやすくなります。また、カスタム投稿タイプごとに固有のURL構造を持たせることで、キーワードとの関連性を高めることも可能でございます。ただし、単に作成するだけでなく、質の高いコンテンツを公開し、適切なSEO対策(タイトルタグ、メタディスクリプション、内部リンクなど)を施すことが重要でございます。
Q2: プラグインとコード、どちらで登録すべきですか?
A2: それぞれにメリットがございます。初心者の方や、迅速にカスタム投稿タイプを設定したい場合は、Custom Post Type UIのようなプラグインの利用をお勧めいたします。GUIで直感的に設定でき、コード記述ミスによるサイト破損のリスクが低い点が利点でございます。一方、開発者の方や、より細かな制御が必要な場合、またはプラグインの数を最小限に抑えたい場合は、コードで登録する方法が適しております。コードで記述することで、テーマファイル内で一元的に管理でき、バージョン管理もしやすくなります。
Q3: 既存の投稿をカスタム投稿タイプに移行できますか?
A3: はい、既存の「投稿」や「固定ページ」をカスタム投稿タイプに移行することは可能でございます。データベースのwp_postsテーブルのpost_typeカラムを、移行したいカスタム投稿タイプのスラッグに更新することで実現できます。ただし、直接データベースを操作する際は、必ず事前にバックアップを取得し、細心の注意を払ってください。また、プラグインの中には、投稿タイプを変換する機能を提供するものもございますので、それらを利用する方が安全でございます。
Q4: カスタム投稿タイプを作成すると、サイトが重くなりますか?
A4: カスタム投稿タイプそのものが直接的にサイトを重くするわけではございません。WordPressの基本的なコンテンツ管理機能の一部として設計されております。しかし、カスタム投稿タイプに大量のコンテンツを登録したり、複雑なカスタムフィールドを多数使用したり、最適化されていないクエリで表示したりすると、データベースへの負荷が増加し、結果的にサイトの表示速度に影響を与える可能性はございます。パフォーマンスを維持するためには、適切なキャッシュプラグインの利用や、データベースクエリの最適化、画像の最適化などが重要でございます。
Q5: カスタム投稿タイプを削除する際の注意点は?
A5: カスタム投稿タイプを削除する際は、その投稿タイプに属するすべてのコンテンツ(投稿、カスタムフィールド、関連するタクソノミーのタームなど)も同時に削除されることに十分ご注意ください。プラグインで作成した場合はプラグインから削除し、コードで追加した場合はfunctions.phpから該当コードを削除することになります。誤って重要なコンテンツを削除しないよう、必ず事前にサイト全体のバックアップを取得し、慎重に作業を進めてください。また、一度削除したカスタム投稿タイプのスラッグは、将来的に再利用する際に問題が発生する可能性もございますので、削除は慎重にご検討ください。
まとめ
WordPressのカスタム投稿タイプは、ウェブサイトのコンテンツ管理をより柔軟かつ効率的に行うための、非常に強力な機能でございます。標準の「投稿」や「固定ページ」では対応しきれない、多様なコンテンツを構造化し、それぞれの目的に合った形で管理・表示することを可能にします。
プラグインを利用すれば、コードの知識がなくても手軽に導入でき、コードを記述すれば、より詳細な制御とカスタマイズが実現できます。カスタムフィールドやカスタムタクソノミーと組み合わせることで、その可能性は無限に広がります。本記事でご紹介した登録方法、表示設定、そして運用におけるヒントやよくある問題の解決策が、皆様のWordPressサイト運営の一助となれば幸いでございます。
適切な計画と実装により、カスタム投稿タイプはWordPressサイトの価値を飛躍的に向上させ、訪問者にとっても管理者にとっても、より使いやすいウェブサイトを構築するための鍵となるでしょう。ぜひこの強力な機能を活用し、貴社のウェブサイトの可能性を最大限に引き出してください。





