この記事ではサイトコーディングで頻出のカスタム投稿タイプの作成ガイドを紹介します。カスタム投稿タイプを作成するための基礎とカスタム投稿タイプを登録するためのパラメータの解説、具体的なソースコードを提供します。Web開発者、デザイナー、HTML/CSSコーダー、そしてWordPressの初心者まで、あらゆるレベルのユーザーに役立つ内容を書いていきます。
はじめに

WordPressは、その柔軟性とカスタマイズ性で広く知られています。
カスタム投稿タイプは、デフォルトの「投稿」と「固定ページ」に加えて、さまざまな投稿タイプを作成できる機能です。例えば、製品、レビュー、コラム、施工実績など、特定のニーズに合わせた投稿タイプを作成できます。これにより、ウェブサイトの機能を拡張し、特定のビジネス要件やユーザーのニーズに合わせて、サイトをカスタマイズすることが可能になります。クライアント様からもカスタム投稿タイプの追加のご依頼もよくあります。
カスタム投稿タイプの基礎

カスタム投稿タイプとは何か?
WordPressの「カスタム投稿タイプ」とは、標準の「投稿」や「固定ページ」以外に、ウェブサイト独自の内容やデータを構造化して表示するための機能です。これにより、ブログ記事や静的なページだけでなく、商品、ニュースリリース、ポートフォリオ、イベント予定表など、特定の形式や目的に合わせたコンテンツを作成、管理できます。
WordPressでは、投稿タイプはコンテンツの「種類」を表し、それぞれ異なる特性や管理方法を持ちます。カスタム投稿タイプは、これらのデフォルトのタイプを拡張し、さまざまな種類のデータを整理しやすくするために設計されています。
なぜカスタム投稿タイプを使うのか?
カスタム投稿タイプを使用する最大の理由は、その柔軟性と効率性にあります。特定のコンテンツタイプを明確に区別することで、サイト管理者はコンテンツをより簡単に整理、管理できます。また、ユーザーはウェブサイトをナビゲートしやすくなり、求めている情報を迅速に見つけられるようになります。
例えば、不動産ウェブサイトの場合、物件リストを通常のブログ投稿とは別のカスタム投稿タイプとして扱うことで、検索やフィルタリングが容易になり、エンドユーザーにとって使いやすい体験を提供できます。また、オンラインストアでは、商品の詳細情報や価格などをカスタムフィールドとして追加することで、製品ページをより魅力的で情報豊富なものにすることができます。
カスタム投稿タイプは、ウェブサイトの拡張性とカスタマイズ性を大きく向上させ、サイトの成長に合わせて新しいコンテンツタイプを追加しやすくするため、デベロッパーやサイトオーナーにとって非常に価値の高いツールです。WordPressを使ってユニークで機能的なウェブサイトを構築する際には、カスタム投稿タイプの理解と活用が不可欠です。
カスタム投稿タイプの登録

登録の基本構文と register_post_type() 関数の解説
WordPressでカスタム投稿タイプを登録するには、register_post_type() 関数を使用します。この関数は、新しい投稿タイプを作成し、WordPressに登録するためのものです。基本的な構文は以下の通りでfunctions.phpに追加します。
function create_post_type() {
$args = array(・・・);
register_post_type('column', $args);
}
add_action( 'init', 'create_post_type' );ここで、$post_type は新しく作成する投稿タイプの名前(文字列)を指定します。この名前はユニークである必要があり、20文字以内の小文字の英数字とダッシュ(-)、アンダースコア(_)のみを使用できます。
$post_typeの例
カスタム投稿タイプがコラムなら「column」
カスタム投稿タイプが施工実績なら「works」
カスタム投稿タイプが商品なら「product」など
$args は、投稿タイプのさまざまな属性を設定するための配列です。この配列には、ラベル、説明、公開設定、階層的かどうか、サポートする機能(タイトル、エディタ、サムネイルなど)、およびメニューでの表示方法など、投稿タイプの振る舞いをカスタマイズするためのさまざまなオプションが含まれます。
$post_type と $args パラメータの重要性
$post_type パラメータは、カスタム投稿タイプを識別するための一意のキーです。この名前は、WordPress内でその投稿タイプを参照する際に使用されるため、明確で覚えやすいものを選ぶことが重要です。
$args パラメータは、カスタム投稿タイプの外観や機能を定義します。例えば、'public' => true を設定すると、投稿タイプが公開され、フロントエンドと管理画面の両方に表示されます。
publicは基本的にtrueである必要があると思っています。デフォルトはfalseなのでtrueに変更しましょう。
このように、$post_type と $args を適切に設定することで、WordPressサイトに完全に統合された、柔軟で強力なカスタム投稿タイプを作成できます。この機能を活用することで、サイトのユーザーエクスペリエンスと管理効率を大幅に向上させることが可能です。
カスタム投稿タイプのラベル設定

カスタム投稿タイプを定義する際には、labels 配列を用いて様々なラベルを設定することができます。これらのラベルは、管理画面での投稿タイプの表示や、特定のアクションに関連するテキストをカスタマイズするために使用されます。
以下は、投稿タイプオブジェクトのラベル配列で受け入れられるキーの詳細です。
など、他にも多くのラベルが設定可能です。これらのラベルを適切に設定することで、カスタム投稿タイプの管理画面をより直感的で使いやすいものにすることができます。
自分は最低限「name」と「singular_name」と「all_items」があれば良いと思っています。
function create_post_type() {
$args = array(
'labels' => array(
'name' => 'コラム',
'singular_name' => 'コラム',
'menu_name' => 'コラム',
'all_items' => 'コラム一覧',
'add_new' => '新規追加',
'add_new_item' => '新規コラムを追加',
'new_item' => '新規コラム',
'edit_item' => 'コラムの編集',
'view_item' => '投稿を表示',
'search_items' => 'コラムを検索',
'not_found' => 'コラムが見つかりませんでした。',
'not_found_in_trash' => 'ゴミ箱内にコラムが見つかりませんでした。'
),
);
register_post_type('column', $args);
}
add_action( 'init', 'create_post_type' );カスタム投稿タイプのサポート機能

supports 配列とサポートされる機能の詳細
カスタム投稿タイプを作成する際、supports 配列を使用して、その投稿タイプがサポートする機能を定義します。この配列には、WordPressが標準で提供する様々な機能を指定でき、カスタム投稿タイプの挙動を細かく設定することができます。
supports 配列で設定できる主な機能は以下の通りです。
'title':投稿タイトルフィールドをサポート
'editor':WordPressのエディタ(本文フィールド)をサポート
'comments':コメント機能をサポート
'revisions':リビジョン(投稿のバージョン管理)をサポート
'trackbacks':トラックバック機能をサポート
'author':著者フィールドをサポート
'excerpt':抜粋フィールドをサポート
'page-attributes':ページ属性(メニュー順序など)をサポート
'thumbnail':アイキャッチ画像(サムネイル)をサポート
'custom-fields':カスタムフィールドをサポート
'post-formats':投稿フォーマットをサポート
これらの機能は、カスタム投稿タイプに応じて適切に選択し、必要な機能のみを投稿タイプに追加することができます。
最低限「title」「editor」「thumbnail」は必要だと考えています。
カスタム投稿タイプの表示設定と管理

管理画面での表示設定
WordPressのカスタム投稿タイプは、管理画面での表示設定を細かくカスタマイズできます。これにより、管理者はサイトのニーズに応じて、投稿タイプの管理をより効果的に行えます。
メニュー位置のカスタマイズ
管理画面のメニューにおいて、カスタム投稿タイプの位置とアイコンをカスタマイズすることができます。
menu_position
このオプションは、カスタム投稿タイプがメニューのどの位置に表示されるかを決定します。数値で位置を指定し、低い数字ほどメニューの上部に近くなります。例えば、5 を設定すると「投稿」の下に表示されます。デフォルトは「コメント」の下です。
10 – 「メディア」の下
20 – 「固定ページ」の下
25 – 「コメント」の下(デフォルト値)
65 – 「プラグイン」の下
70 – 「ユーザー」の下
75 – 「ツール」の下
80 – 「設定」の下
カスタム投稿タイプの一覧ページをサイトで表示する場合
カスタム投稿タイプの一覧ページをサイトで表示する場合はhas_archive を true に設定する必要があります。デフォルトはfalseです。
カスタム投稿タイプをブロックエディターで利用する方法

show_in_rest
カスタム投稿タイプをブロックエディターで利用するには、 show_in_rest を true に設定する必要があります。デフォルトはfalseなのでクラシックエディターで利用したい方は指定しなくても良いです。
カスタム投稿タイプのソースコード例

以下に、実際のコード例とそれを使用するシナリオ、さらには既存のサイトにカスタム投稿タイプを統合する方法を紹介します。
具体的なソースコード例とシナリオ
例えば、「コラム」というカスタム投稿タイプを作成する例を考えてみましょう。以下はそのための基本的なコード例です。
PR
function create_post_type() {
$args = array(
'labels' => array(
'name' => 'コラム',
'singular' => 'コラム',
'all_items' => 'コラム一覧',
),
'public' => true,
'has_archive' => true
'supports' => array(
'title',
'editor',
'thumbnail',
),
'menu_position' => 5,
'show_in_rest' => true,
);
register_post_type('column', $args);
}
add_action('init', 'create_post_type');このコードは、column という名前のカスタム投稿タイプを作成し、それを公開してアーカイブページを持つように設定しています。また、タイトル、エディタ、サムネイルをサポートするようにしています。
既存のサイトにカスタム投稿タイプを統合する方法
既存のWordPressサイトにカスタム投稿タイプを統合するには、上記のようなコードをサイトのテーマの functions.php ファイルまたはカスタムプラグインに追加します。これにより、管理画面に新しい投稿タイプが追加され、サイトのコンテンツを分類しやすくなります。
統合後は、新しいカスタム投稿タイプに対してテンプレートファイル(例:archive-column.phpやsingle-column.php)を作成することで、その投稿タイプ専用の表示スタイルやレイアウトを定義することができます。また、必要に応じてカスタムタクソノミーを追加することで、さらに詳細な分類や管理が可能になります。
このようにして、カスタム投稿タイプは既存のサイトに容易に統合でき、サイトの機能を拡張し、ユーザーエクスペリエンスを向上させることが可能です。
まとめ

WordPressの「カスタム投稿タイプ」とは、標準の「投稿」や「固定ページ」以外に、ウェブサイト独自の内容やデータを構造化して表示するための機能です。
今回お伝えしたソースコードをfunctions.phpに追加することでカスタム投稿タイプをご自身のWordPressに追加することができます。「コラム」の部分はご自身の環境に合わせて適宜変更してください。