2026年5月30日
2026年5月30日
Pods(カスタム投稿タイプ・カスタムフィールド)の使い方|作成から表示・WP-CLIまで
Pods(正式名称は「Pods – Custom Content Types and Fields」)は、WordPress にカスタム投稿タイプ、カスタムタクソノミー、カスタムフィールドを追加できる無料のプラグインです。投稿タイプの登録とフィールドの作成を1つのプラグインで行え、作ったデータを表示するためのテンプレート機能やブロックも備えています。
2026年10月時点の最新版は 3.3.9.2 で、WordPress 6.3 以上・PHP 7.2 以上が必要です(有効インストール数は10万以上)。この記事では、書籍を管理する「本」の投稿タイプに「ISBN」と「価格」のフィールドを付ける例で、作成から表示までを説明します。画面の確認には WordPress 7.1.4 と Pods 3.3.9.2 を使っています。Pods の管理画面は日本語に翻訳されていない部分があるため、英語のまま表示される項目は英語で書いています。
Podsでできること
Pods では、管理する入れ物を「Pod」と呼びます。新しく作れる Pod の種類(コンテンツタイプ)は次のとおりです。
| 種類 | 内容 |
|---|---|
| カスタム投稿タイプ | 投稿や固定ページと同じように、一覧・編集画面を持つ新しい投稿タイプ |
| カスタムタクソノミー | カテゴリーやタグのような分類 |
| カスタム設定ページ | サイト全体で使う値(電話番号など)を保存する設定画面 |
| 拡張コンテンツタイプ(Advanced Content Type) | WordPress の投稿とは別の独自テーブルに保存するデータ。「コンポーネント」で有効にすると使える |
また、既存の投稿・固定ページ・カテゴリー・ユーザー・メディア・コメントにフィールドを追加する「拡張」もできます。
インストール
管理画面の「プラグイン」→「新規プラグインを追加」で「Pods」を検索し、「Pods – Custom Content Types and Fields」をインストールして有効化します。
WP-CLI を使う場合は次のとおりです。プラグインのスラッグは pods です。
wp plugin install pods --activate
有効化すると、管理画面のメニューに「Pods Admin」が追加されます。
カスタム投稿タイプを作る
- 「Pods Admin」→「新規追加」を開きます
- 「新しいコンテンツタイプを作成」を選びます
- 「コンテンツタイプ」で「カスタム投稿タイプ (投稿や固定ページと同等)」を選びます
- 「単数形のラベル」に
本、「複数形のラベル」に本と入力します - サイトの訪問者にも表示する場合は、「Content Privacy」で「Yes, make this content available for Dynamic Features in Pods and WordPress」を選びます
- 「Advanced」を開き、「Podの名称」(投稿タイプの名前。英小文字とアンダースコア)を
bookにします - 「次のステップ」をクリックすると、Pod が作られ、編集画面が開きます
5の「Content Privacy」は初期状態では選ばれていません。このままだと投稿タイプが公開扱いにならず、個別ページや後述のショートコードの内容がサイトの訪問者に表示されません(管理者には「Pods Access Rights: Admin-only Notice」というお知らせが表示されます)。後から変える場合は、Pod の編集画面の「高度なオプション」(Advanced Options)タブにある「Publicly Queryable」をオンにして保存します。
「Podの名称」は投稿タイプの名前として URL やデータベースに使われるため、記事を入れた後に変えないようにします。
フィールドを追加する
Pod の編集画面で、フィールドを追加します。
- 「Add Field」をクリックします
- ラベル(画面に出る名前)に
ISBN、名前(プログラムで使う名前)にisbnを入力します - 「フィールドタイプ」で「プレーンテキスト」(Plain Text)を選び、保存します
- 同じように、ラベル
価格、名前price、フィールドタイプ「Plain Number」(日本語の画面では「整数」と表示)のフィールドを追加します - 「Save Pod」をクリックして Pod を保存します
主なフィールドタイプは次のとおりです。
| フィールドタイプ | 用途の例 |
|---|---|
| テキスト系(Plain Text、Website、Phone、E-mail、Password) | 1行の文字、URL、電話番号、メールアドレス |
| 段落系(Plain Paragraph Text、WYSIWYG (Visual Editor)、Code (Syntax Highlighting)) | 複数行の文章、書式付きの文章 |
| 日時(Date / Time、Date、Time) | イベントの日付など |
| 数値(Plain Number、Currency) | 数量、金額 |
| ファイル(File / Image / Video)、oEmbed | 画像や PDF、YouTube などの埋め込み |
| 関係(Relationship) | ほかの投稿・ユーザー・タクソノミーなどとの関連付け |
| Yes / No、Color Picker | オン・オフの値、色 |
保存すると、メニューに「本」が追加され、投稿と同じように新規追加・編集ができます。編集画面の下に、追加した ISBN と価格の入力欄が表示されます。
保存方式(メタベースとテーブルベース)
カスタム投稿タイプの Pod は、初期設定の「メタベース (WPデフォルト)」では、フィールドの値を WordPress 標準のカスタムフィールド(wp_postmeta テーブル)に保存します。そのため、Pods の関数を使わなくても get_post_meta() で値を読めます。
<?php
// メタベースの Pod なら、WordPress 標準の関数でも値を読める
$isbn = get_post_meta( get_the_ID(), 'isbn', true );
「テーブルベース」を選ぶと、フィールドの値を Pod ごとの専用テーブルに保存します。拡張コンテンツタイプとテーブルベースの保存は、初期状態では無効になっていて、「Pods Admin」→「コンポーネント」で「Advanced Content Types」「Table Storage」を有効にすると使えます。データの件数が多く、フィールドで絞り込む処理が重い場合などに検討します。迷ったら、ほかのプラグインやテーマと互換性のあるメタベースを使います。
テンプレート(PHP)で表示する
個別ページにフィールドを出す
クラシックテーマでは、投稿タイプ book の個別ページに single-book.php が使われます。ループの中で pods() 関数を使い、フィールドの値を出します。
<?php
// single-book.php のループの中で、表示中の本のフィールドを出す
$book = pods( 'book', get_the_ID() );
?>
<p>ISBN: <?php echo esc_html( $book->field( 'isbn' ) ); ?></p>
<p>価格: <?php echo esc_html( $book->display( 'price' ) ); ?>円</p>
pods( 'Pod の名前', 投稿ID )で、1件分のデータを取得しますfield()は保存されている値をそのまま返し、display()はフィールドの設定に合わせて整えた値を返します。この例では、価格3300がfield()では3300、display()では3,300になります- 出力するときは
esc_html()などでエスケープします
条件に合う一覧を出す
pods() に条件を渡すと、複数の項目を取得できます。fetch() で1件ずつ順に取り出します。
<?php
// 価格が2,500円以上の本を、新しい順に10件表示する
$books = pods(
'book',
array(
'limit' => 10,
'orderby' => 't.post_date DESC',
'where' => 'price.meta_value + 0 >= 2500',
)
);
if ( 0 < $books->total() ) {
echo '<ul class="book-list">';
while ( $books->fetch() ) {
printf(
'<li><a href="%1$s">%2$s</a>(ISBN: %3$s、%4$s円)</li>',
esc_url( get_permalink( $books->id() ) ),
esc_html( $books->field( 'post_title' ) ),
esc_html( $books->field( 'isbn' ) ),
esc_html( $books->display( 'price' ) )
);
}
echo '</ul>';
}
whereとorderbyは SQL の一部として使われます。t.は投稿のテーブル、price.meta_valueはメタベースで保存したpriceフィールドの値です(メタの値は文字列なので、数値として比べるために+ 0を付けています)whereに、フォームの入力値などを確認せずに入れないでください。SQL インジェクションの原因になりますtotal()は今回取り出した件数、id()は現在の項目の ID を返します
この2つのコードは、Pods 3.3.9.2 で実際に出力を確認しています。
Pod Templatesとショートコードで表示する
PHP を書かずに表示したい場合は、Pods の「テンプレート」コンポーネント(初期状態で有効)を使います。
- 「Pods Admin」→「Pod Templates」で新しいテンプレートを作り、名前を
book-listにします - 本文に、
{@フィールド名}の形(マジックタグ)で1件分の表示内容を書きます。例は次のとおりです
<li>{@post_title}(ISBN: {@isbn}、{@price}円)</li>
テンプレートを公開したら、表示したいページにショートコードを置きます。ブロックエディターでは「ショートコード」ブロックに次のように書きます。
[pods name="book" template="book-list" limit="10"]
マジックタグの {@price} は、display() と同じく整えた値(例: 3,300)を出力します。なお、ショートコードの orderby に SQL の式を書くと、セキュリティ上の理由で「ORDER BY contains SQL that is not allowed」というエラーになることがあります。並び順を細かく指定したい場合は、前の節の PHP を使います。
ブロックエディターやサイトエディターでは、Pods が追加するブロック(「Pods Item List」「Pods Single Item」「Pods Field Value」など)を使って、同じように一覧や1件分のデータを表示することもできます。
WP-CLIでPodとフィールドを作る
Pods には WP-CLI のコマンド(wp pods)があり、画面を使わずに Pod やフィールドを作れます。Pods 3.3.9.2 で次の手順を確認しました。
# カスタム投稿タイプの Pod を作る
wp pods pod add --type=post_type --name=book --label=本 --label_singular=本
# フィールドをまとめるグループを作る(出力される "id" の値を控える)
wp pods group add --pod=book --name=book_info --label=本の情報
# グループに ISBN(テキスト)と価格(数値)のフィールドを追加する(--group_id は上の id。この例では 5)
wp pods field add --pod=book --group_id=5 --name=isbn --label=ISBN --type=text
wp pods field add --pod=book --group_id=5 --name=price --label=価格 --type=number
- 試した環境では、
wp pods field addでグループを名前(--group=book_info)で指定するとエラーになったため、ID(--group_id)で指定しています - コマンドで作った Pod も、画面で作った場合と同じく公開扱いになっていません。訪問者に表示する場合は、Pod の編集画面の「高度なオプション」タブで「Publicly Queryable」をオンにします(コマンドで変える場合は
wp pods pod update-by-slug book --args='{"publicly_queryable":"1"}') - 使えるオプションは
wp help pods pod addやwp help pods field addで確認できます。旧版の記事にあったwp pod createやwp pod updateというコマンドは存在しません
注意点
- Pod の名前やフィールドの名前を後から変えない:保存済みのデータは古い名前で保存されているため、表示されなくなることがあります
- ほかのプラグインと同じ投稿タイプ名を使わない:Custom Post Type UI や ACF などで同じ名前の投稿タイプを登録すると、設定がぶつかります
- 個別ページが 404 になる:投稿タイプを作った直後に 404 になる場合は、「設定」→「パーマリンク」を開いて「変更を保存」をクリックし、パーマリンクの設定を更新します
- バックアップを取ってから変更する:Pod の削除や保存方式の変更は、保存済みのデータに影響します。作業の前にデータベースをバックアップします
まとめ
- Pods は、カスタム投稿タイプ・タクソノミー・フィールドを1つのプラグインで作れる
- 「Pods Admin」→「新規追加」で Pod を作り、編集画面の「Add Field」でフィールドを追加する
- 訪問者に表示する場合は「Content Privacy」で公開を選ぶ
- 表示は
pods()のfield()・display()・fetch()、または Pod Templates とショートコード、Pods のブロックで行う - WP-CLI の
wp pods pod add・wp pods group add・wp pods field addでも作成できる
関連記事: