- 実践 WordPress ホーム
- 投稿タイプ管理
WordPress のカスタム投稿タイプを作る方法
WordPress はその柔軟性からさまざまなウェブサイトの構築に使用されています。 その柔軟性を代表する機能が「カスタム投稿タイプ」です。 カスタム投稿タイプの機能を利用することで、サイト上で公開したいさまざまな形式のコンテンツを効果的・効率的に管理することができます。
ここでは、カスタム投稿タイプの作成方法を紹介します。
カスタム投稿タイプとは?
カスタム投稿タイプとは、 WordPress をインストールするとデフォルトで用意されている「投稿」「ページ」とは別に、さまざまな形のコンテンツを WordPress の強力なコンテンツ管理機能で管理できるものです。 商品情報・イベント情報・ FAQ ・お知らせ・レビューなど、ウェブサイトによくあるタイプの情報の多くがカスタム投稿タイプとして実現可能です。
カスタム投稿タイプの作成方法
A. テーマの functions.php
を使う
カスタム投稿タイプを作成する一般的な方法のひとつは、有効なテーマの functions.php
ファイルを使う方法です。
「商品」というカスタム投稿タイプを作成するサンプルコードを次に示します。
functions.php
:
<?php
/**
* カスタム投稿タイプ「商品」を作る
*/
function create_posttypes() {
register_post_type( 'product', [
// 各種ラベルを設定する:
'labels' => [
'name' => '商品',
'singular_name' => '商品',
'add_new' => '新規追加',
'add_new_item' => '商品を追加',
'new_item' => '新商品',
'edit_item' => '商品を編集',
'view_item' => '商品を閲覧',
'all_items' => 'すべての商品',
],
'public' => true,
// アーカイブページは作成しない:
'has_archive' => false,
'show_in_rest' => true,
// メニューのアイコンを products に適したものに設定する:
'menu_icon' => 'dashicons-products',
// タイトルとサムネールを有効にする:
'supports' => [
'title',
'thumbnail',
],
// スラグを設定する:
'rewrite' => ['slug' => 'products'],
]);
}
add_action( 'init', 'create_posttypes' );
このコードを functions.php
に追加すると WordPress 管理画面のメニューに「商品」という投稿タイプが追加されます。
ここでは細かな方法は説明しませんが、さらにカスタムフィールドを追加することで、「商品画像」や「スライドショー」「仕様」などの情報を効率よく管理できます。
B. カスタムプラグインを作成する
テーマの functions.php
を使う方法は一般的ですが、テーマの functions.php
を使うと投稿タイプがテーマに依存してしまう形になります。
つまり、そのテーマが有効でないと投稿タイプが使えないため、将来的にそのテーマから別のテーマに切り替える場合などの移行作業が難しくなります。
将来的にテーマの変更やリニューアルを予定している場合・その可能性がある場合は、テーマの代わりにカスタムプラグインを作ってその中で投稿タイプを定義した方がメンテナンス性は上がります。
C. カスタム投稿タイプ作成用のプラグインを使う
WordPress コミュニティにはカスタム投稿タイプ用の定番プラグインがいくつかあるため、そういったプラグインを使ってカスタム投稿タイプを作る形も一般的です。
プラグインを使うとコードを一切書かなくても複雑なカスタム投稿タイプをすばやく手軽に作成できます。
ただし、プラグインが提供するカスタム投稿タイプには、「フィールドのタイプ」や「フィールドの数」「編集画面のデザイン」などさまざまな面で制約があります。 用途に合ったものを選ばないと最適な形の投稿タイプが作れないため注意が必要です。
また、プラグインはその開発・保守が終了することもあり、場合によってはそれが深刻なセキュリティリスクにつながることもあります。 そのため、中長期にわたって WordPress サイトを管理・運営していく予定の場合は特にこのあたりのプラグインの選定には慎重にならなければなりません。
2024 年 2 月時点でカスタム投稿タイプの作成で人気のプラグインには次のようなものがあります。
Advanced Custom Fields
Custom Post Type UI
Meta Box
「 ACF 」の略称で知られる Advanced Custom Fields プラグインはカスタム投稿タイプ関係で最も有名なプラグインです。
プログラマの私が個人的に愛用しているのはプログラマ向けの Meta Box です。 Meta Box はウェブアプリケーションフレームワークによくあるデータモデル管理手法に近く、「カスタム投稿タイプやカスタムフィールドを(データベースではなく)コードで管理したい」という方におすすめです。