カスタムフィールドとは

WordPressの投稿には、デフォルトで「タイトル」「本文」「アイキャッチ画像」などの項目がありますが、これだけでは不足する場合があります。カスタムフィールドを使うと、任意の項目を追加し、独自のデータを管理できます。

カスタムフィールドの構造

カスタムフィールドは、「キー(名前)」と「値(データ)」のペアで構成されます。

💡 カスタムフィールドの例
投稿タイトル:「新型iPhone 15 Pro レビュー」

カスタムフィールド:
・キー:price → 値:159,800円
・キー:release_date → 値:2024年9月22日
・キー:rating → 値:4.5
・キー:manufacturer → 値:Apple

カスタムフィールドの用途

用途 カスタムフィールドの例
商品サイト 価格、在庫数、メーカー、型番、カラー
不動産サイト 価格、間取り、築年数、最寄り駅、駐車場
イベント情報 開催日時、場所、参加費、定員、申込締切
レシピサイト 調理時間、カロリー、難易度、材料費
求人サイト 給与、勤務地、雇用形態、応募締切

カスタムフィールドのメリット

  • 構造化されたデータ管理 - 情報を整理して保存できる
  • 柔軟なデザイン - データを好きな場所に好きな形式で表示できる
  • 検索・絞り込み機能 - カスタムフィールドで検索や並び替えができる
  • 再利用性 - 同じフォーマットを複数の投稿で使える
  • API連携 - 外部システムとデータを連携しやすい

標準機能でのカスタムフィールドの使い方

WordPressには、標準でカスタムフィールド機能が備わっていますが、デフォルトでは非表示になっています。

カスタムフィールドパネルの表示

  1. 投稿編集画面を開く
    新規投稿または既存の投稿を開きます。
  2. オプション表示設定を開く
    画面右上の「⋮」(縦3点リーダー)→「オプション」をクリックします。
  3. カスタムフィールドにチェック
    「カスタムフィールド」にチェックを入れて、パネルを有効化します。
  4. カスタムフィールドパネルが表示される
    投稿画面の下部にカスタムフィールド入力エリアが表示されます。

カスタムフィールドの追加

  1. 「新規追加」をクリック
    カスタムフィールドパネルの「新規追加」リンクをクリックします。
  2. キー(名前)を入力
    例:「price」「event_date」など(英数字とアンダースコア推奨)
  3. 値(データ)を入力
    例:「15,000円」「2024-12-25」など
  4. 「カスタムフィールドを追加」をクリック
    カスタムフィールドが保存されます。

標準機能での表示方法

カスタムフィールドのデータを表示するには、テーマファイルにコードを追加します。

<?php
// 単一のカスタムフィールド値を取得
$price = get_post_meta(get_the_ID(), 'price', true);
if ($price) {
    echo '<p>価格: ' . esc_html($price) . '</p>';
}

// 複数の値がある場合
$tags = get_post_meta(get_the_ID(), 'tags', false);
if ($tags) {
    echo '<p>タグ: ' . implode(', ', $tags) . '</p>';
}
?>
⚠️ 標準機能の制限
WordPressの標準カスタムフィールド機能は、シンプルなテキスト入力のみ対応しています。画像アップロード、日付選択、繰り返しフィールドなどの高度な機能は、プラグインを使用する必要があります。

Advanced Custom Fields (ACF) プラグイン

Advanced Custom Fields(ACF)は、カスタムフィールドを簡単かつ強力に管理できる最も人気のあるプラグインです。

ACFの主な機能

✅ ACFで追加できるフィールドタイプ
  • テキスト:1行テキスト、複数行テキスト、番号
  • 選択:セレクトボックス、チェックボックス、ラジオボタン
  • コンテンツ:WYSIWYGエディター、画像、ファイル、ギャラリー
  • 関連:投稿、ページ、タクソノミー、ユーザー
  • jQuery:日付選択、カラーピッカー、Google Map
  • レイアウト:タブ、グループ、リピーター(Pro版)

ACFのインストールと設定

  1. プラグインをインストール
    「プラグイン」→「新規追加」で「Advanced Custom Fields」を検索してインストール・有効化します。
  2. フィールドグループを作成
    「カスタムフィールド」→「新規追加」でフィールドグループを作成します。
  3. フィールドを追加
    「+ フィールドを追加」ボタンで必要なフィールドを追加します。
  4. 表示場所を設定
    「位置」セクションで、どの投稿タイプに表示するかを設定します。
  5. 公開
    「公開」ボタンをクリックして保存します。

ACFフィールドの作成例:イベント情報

📅 イベント投稿用のカスタムフィールド

フィールドグループ名:イベント情報

フィールド一覧:
1. 開催日時(日付ピッカー)
2. 開催場所(テキスト)
3. 参加費(番号)
4. 定員(番号)
5. 申込締切(日付ピッカー)
6. 主催者(テキスト)
7. 地図(Google Map - Pro版)

ACFフィールドの表示方法

方法1:テンプレートタグを使用

<?php
// テキストフィールド
$event_date = get_field('event_date');
if ($event_date) {
    echo '<p>開催日時: ' . $event_date . '</p>';
}

// 画像フィールド
$image = get_field('event_image');
if ($image) {
    echo '<img src="' . esc_url($image['url']) . '" alt="' . esc_attr($image['alt']) . '">';
}

// リピーターフィールド(Pro版)
if (have_rows('speakers')) {
    while (have_rows('speakers')) {
        the_row();
        $name = get_sub_field('speaker_name');
        $title = get_sub_field('speaker_title');
        echo '<p>' . $name . ' - ' . $title . '</p>';
    }
}
?>

方法2:ショートコードブロック(Gutenberg)

ACF Blocks機能を使えば、Gutenbergエディターでカスタムフィールドを簡単に表示できます。

ACF Pro版の機能

機能 無料版 Pro版
基本フィールド
リピーターフィールド ×
フレキシブルコンテンツ ×
ギャラリーフィールド ×
クローンフィールド ×
価格 無料 $49/年〜

カスタムフィールドの実用例

例1:商品レビューサイト

商品レビュー記事に構造化された情報を追加します。

🛍️ 商品レビュー用カスタムフィールド

商品名:テキスト
価格:数値
評価(星):セレクト(1〜5)
メーカー:テキスト
購入リンク:URL
商品画像:画像アップロード
長所:リピーター(箇条書き)
短所:リピーター(箇条書き)
<div class="product-review">
    <h3><?php the_field('product_name'); ?></h3>
    <div class="rating">
        評価: <?php the_field('rating'); ?> / 5
    </div>
    <div class="price">
        価格: <?php the_field('price'); ?>円
    </div>
    <a href="<?php the_field('purchase_link'); ?>">購入する</a>
</div>

例2:不動産物件サイト

物件情報を詳細に管理します。

🏠 不動産物件用カスタムフィールド

物件種別:セレクト(マンション/一戸建て/土地)
価格:数値
間取り:テキスト(例:3LDK)
専有面積:数値(㎡)
築年数:数値
最寄り駅:テキスト
駅徒歩:数値(分)
駐車場:ラジオ(有/無)
物件写真:ギャラリー
地図:Google Map

例3:レシピサイト

料理レシピを構造化して管理します。

👨‍🍳 レシピ用カスタムフィールド

調理時間:数値(分)
分量:テキスト(2人分、4人分など)
難易度:セレクト(簡単/普通/難しい)
カロリー:数値(kcal)
材料:リピーター(材料名、分量)
調理手順:リピーター(ステップ、説明、画像)
料理ジャンル:チェックボックス(和食/洋食/中華など)

例4:イベント・セミナーサイト

イベント情報を一元管理します。

✅ イベント用カスタムフィールド
  • 開催日時:日付・時刻ピッカー
  • 開催場所:テキスト
  • 参加費:数値
  • 定員:数値
  • 現在の申込人数:数値
  • 申込締切:日付ピッカー
  • 主催者:テキスト
  • 申込フォームURL:URL

カスタムフィールドの検索と絞り込み

WP_Queryでカスタムフィールドを検索

カスタムフィールドの値で投稿を絞り込むことができます。

<?php
// 価格が10,000円以下の商品を表示
$args = array(
    'post_type' => 'product',
    'meta_query' => array(
        array(
            'key' => 'price',
            'value' => 10000,
            'compare' => '<=',
            'type' => 'NUMERIC'
        )
    )
);
$query = new WP_Query($args);

// 2024年12月以降のイベントを表示
$args = array(
    'post_type' => 'event',
    'meta_key' => 'event_date',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_query' => array(
        array(
            'key' => 'event_date',
            'value' => '2024-12-01',
            'compare' => '>=',
            'type' => 'DATE'
        )
    )
);
$query = new WP_Query($args);
?>

複数条件での絞り込み

<?php
// 価格が5,000〜20,000円で、在庫ありの商品
$args = array(
    'post_type' => 'product',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'price',
            'value' => array(5000, 20000),
            'compare' => 'BETWEEN',
            'type' => 'NUMERIC'
        ),
        array(
            'key' => 'in_stock',
            'value' => 'yes',
            'compare' => '='
        )
    )
);
$query = new WP_Query($args);
?>

カスタムフィールドでの並び替え

<?php
// 価格の安い順に表示
$args = array(
    'post_type' => 'product',
    'meta_key' => 'price',
    'orderby' => 'meta_value_num',
    'order' => 'ASC'
);

// 開催日が近い順に表示
$args = array(
    'post_type' => 'event',
    'meta_key' => 'event_date',
    'orderby' => 'meta_value',
    'order' => 'ASC'
);
?>

カスタムフィールドのベストプラクティス

1. 命名規則を統一する

カスタムフィールドのキー名は、わかりやすく一貫性のある命名規則を使いましょう。

✅ 良い命名規則
  • 英数字とアンダースコアのみ使用
  • 小文字で統一
  • 意味が明確な名前をつける
  • プレフィックスを使う(例:product_price, event_date)
⚠️ 避けるべき命名
・日本語のキー名
・スペースを含むキー名
・予約語(post, page, titleなど)
・極端に短いキー名(p, d, xなど)

2. データ型を適切に設定する

数値、日付、テキストなど、データの種類に応じて適切なフィールドタイプを選びましょう。

3. 必須フィールドと任意フィールドを明確にする

ACFでは、フィールドごとに「必須」設定ができます。重要な情報は必須にしましょう。

4. デフォルト値を設定する

よく使う値がある場合は、デフォルト値を設定すると入力の手間が省けます。

5. バリデーションを活用する

ACFのバリデーション機能で、不正なデータの入力を防ぎます。

  • 数値フィールド:最小値・最大値を設定
  • テキストフィールド:文字数制限を設定
  • 日付フィールド:入力可能な範囲を設定
  • URLフィールド:URL形式のチェック

6. パフォーマンスを考慮する

💡 パフォーマンス最適化のヒント
・よく使うカスタムフィールドにはインデックスを設定
・大量のデータを扱う場合は、ページネーションを実装
・不要になったカスタムフィールドは削除
・リピーターフィールドの入れ子は最小限に

よくある質問(FAQ)

Q1. カスタムフィールドとカスタム投稿タイプの違いは何ですか?
カスタムフィールドは、投稿に「追加の情報項目」を加える機能です。一方、カスタム投稿タイプは、投稿とは別の「新しいコンテンツタイプ」を作成します。例えば、「商品」というカスタム投稿タイプを作り、その中で「価格」「在庫数」などのカスタムフィールドを使用する、という組み合わせがよく使われます。
Q2. ACF無料版とPro版、どちらを選ぶべきですか?
基本的なカスタムフィールド(テキスト、画像、選択など)だけなら無料版で十分です。しかし、リピーターフィールド(繰り返し項目)、フレキシブルコンテンツ、ギャラリーなどの高度な機能が必要な場合は、Pro版($49/年〜)をおすすめします。本格的なWebサイト構築にはPro版が便利です。
Q3. カスタムフィールドのデータはどこに保存されますか?
カスタムフィールドのデータは、WordPressのデータベース内の「wp_postmeta」テーブルに保存されます。各カスタムフィールドは、キーと値のペアとして保存され、投稿IDと関連付けられています。
Q4. カスタムフィールドはSEOに影響しますか?
直接的なSEO効果はありませんが、構造化データ(Schema.org)と組み合わせることで、検索結果にリッチスニペット(レビュー星、価格、イベント情報など)を表示できます。これにより、クリック率が向上する可能性があります。
Q5. テーマを変更したら、カスタムフィールドのデータは消えますか?
いいえ、カスタムフィールドのデータはデータベースに保存されているため、テーマを変更しても消えません。ただし、新しいテーマがカスタムフィールドの表示に対応していない場合、画面に表示されなくなります。表示させるには、新しいテーマのテンプレートファイルにコードを追加する必要があります。
Q6. カスタムフィールドをエクスポート・インポートできますか?
はい、ACFには「エクスポート」機能があり、フィールドグループの設定をJSONまたはPHPコードとしてエクスポートできます。これにより、別のサイトに同じカスタムフィールド設定を簡単に移行できます。また、WordPressの標準エクスポート機能を使えば、カスタムフィールドのデータも含めて投稿をエクスポート・インポートできます。

まとめ

カスタムフィールドは、WordPressで高機能なWebサイトを構築するための強力なツールです。標準機能でも使えますが、Advanced Custom Fields(ACF)プラグインを使うことで、より簡単で柔軟なカスタマイズが可能になります。

✅ カスタムフィールド活用のチェックリスト
  • サイトで管理したいデータ項目を明確にする
  • ACFプラグインをインストールする
  • フィールドグループを作成し、必要なフィールドを追加する
  • 適切なフィールドタイプを選択する
  • 必須フィールドとバリデーションを設定する
  • テーマファイルにカスタムフィールド表示コードを追加する
  • 検索・絞り込み機能が必要な場合はWP_Queryを実装する
  • 定期的にデータベースを最適化し、不要なフィールドを削除する

まずは無料版のACFで基本的なカスタムフィールドを試してみましょう。必要に応じてPro版にアップグレードすれば、さらに高度な機能が使えるようになります。

関連用語