2026年5月20日

2026年5月20日

Advanced Custom Fields(ACF)の基本的な使い方

はじめに

Advanced Custom Fields(ACF)はWordPressに任意のカスタムフィールドを追加できるプラグインです。テキスト・画像・セレクトボックス・繰り返しフィールドなど豊富なフィールドタイプで、投稿・固定ページ・カスタム投稿タイプに独自の入力欄を追加できます。

症状・原因

  • 投稿に独自の入力欄(料金・電話番号・画像など)を追加したい
  • カスタム投稿タイプに対応したフィールドグループを設定したい
  • ACFのフィールドをテーマファイルで表示したい
  • フィールドグループをコードで登録・管理したい

解決手順

ステップ1:ACFをインストールする

wp plugin install advanced-custom-fields --activate
# ACF Pro の場合はライセンスキーを取得してからインストール

管理画面から:

プラグイン → 新規追加 → 「Advanced Custom Fields」で検索
→「今すぐインストール」→「有効化」

ステップ2:フィールドグループを作成する

ACF → フィールドグループ → 「新規追加」
→ グループ名: 「会社情報」
→「フィールドを追加」
  - フィールドタイプ: テキスト
  - フィールドラベル: 電話番号
  - フィールド名: phone_number(自動生成)

→「フィールドを追加」
  - フィールドタイプ: 画像
  - フィールドラベル: メイン画像
  - フィールド名: main_image
  - 戻り値の形式: 画像配列

→ 表示条件(ロケーション):
  - 投稿タイプ = 固定ページ
  → 「公開」をクリック

ステップ3:フィールドグループをコードで登録する

プラグイン管理に依存せず、テーマ/プラグインでフィールドを定義:

// functions.php — ACFフィールドグループをコードで登録
add_action('acf/init', function() {
    acf_add_local_field_group([
        'key'      => 'group_company_info',
        'title'    => '会社情報',
        'fields'   => [
            [
                'key'   => 'field_phone_number',
                'label' => '電話番号',
                'name'  => 'phone_number',
                'type'  => 'text',
            ],
            [
                'key'           => 'field_main_image',
                'label'         => 'メイン画像',
                'name'          => 'main_image',
                'type'          => 'image',
                'return_format' => 'array',
                'preview_size'  => 'medium',
            ],
        ],
        'location' => [
            [['param' => 'post_type', 'operator' => '==', 'value' => 'page']],
        ],
    ]);
});

ステップ4:フィールドタイプを使い分ける

よく使うフィールドタイプ:
→ テキスト: 短い文字列(タイトル・電話番号)
→ テキストエリア: 複数行テキスト
→ 数値: 価格・個数
→ 画像: 写真1枚(IDまたは配列で返す)
→ ギャラリー: 複数枚画像
→ セレクト: ドロップダウン選択
→ チェックボックス: 複数選択
→ True/False: ON/OFFスイッチ
→ 関係: 他の投稿へのリンク
→ 繰り返し(Repeater): 複数行の入力(ACF Pro)
→ フレキシブルコンテンツ: 可変レイアウト(ACF Pro)

ステップ5:WP-CLIでACFフィールドを確認する

# 投稿のACFメタデータを確認
wp post meta list 123 --format=table

# 特定フィールドの値を取得
wp post meta get 123 phone_number

# フィールドグループ(CPT: acf-field-group)を一覧表示
wp post list --post_type=acf-field-group --fields=ID,post_title,post_status

# フィールドグループをJSONでエクスポート
wp post list --post_type=acf-field-group --format=ids | \
  xargs -I {} wp post get {} --field=post_content > acf-export.json

ステップ6:フィールドをPHPで取得する

// 単一フィールドを取得(グローバルループ内)
$phone = get_field('phone_number');
echo esc_html($phone);

// 投稿IDを指定して取得(ループ外)
$image = get_field('main_image', 42);
if ($image) {
    echo '<img src="' . esc_url($image['url']) . '" alt="' . esc_attr($image['alt']) . '">';
}

// サブフィールドを持つ繰り返しフィールド(ACF Pro)
if (have_rows('staff_list')) {
    while (have_rows('staff_list')) {
        the_row();
        $name  = get_sub_field('staff_name');
        $title = get_sub_field('staff_title');
        echo '<p>' . esc_html($name) . '(' . esc_html($title) . ')</p>';
    }
}

注意事項

  • ACFのフィールド名はスネークケース(phone_number)で統一してください
  • フィールドグループをコード登録する場合、管理画面での編集は不要(UIに表示されない)
  • ACF Proの「繰り返し」「フレキシブルコンテンツ」は有料版のみです

まとめ

ACFはフィールドグループを管理画面またはコードで登録し、get_field() で値を取得してテンプレートに表示します。acf_add_local_field_group() でコード管理すれば、Git管理との相性も向上します。

お気軽にご相談ください

お見積りへ お問い合わせへ