閉じる

技術ブログ

WP-CLIでACF(Advanced Custom Fields)のカスタムフィールドを一括登録する方法

2026.02.04

WordPressのカスタムフィールドプラグイン「ACF(Advanced Custom Fields)」の値を、WP-CLIでコマンドから一括登録できるのか?
実際に検証した結果、「出来る」ことが確認できました。本記事ではその全手順を解説します。


はじめに ─ なぜWP-CLIでACFを操作したいのか

Web制作の現場では、ACF(Advanced Custom Fields)を使って会社情報・物件情報・スタッフ紹介などを管理するケースが非常に多くあります。

しかし、案件の初期構築で数十〜数百のカスタムフィールドを手作業で入力するのは、時間がかかる上にミスの温床です。

そこで登場するのがWP-CLI。コマンドラインからWordPressを操作できるツールです。
WP-CLIでACFのフィールドに値を登録できれば、CSVやスクリプトからの一括登録が可能になります。


全体の流れ(5ステップ)

STEP やること 使うコマンド
1 ACFプラグインのインストール wp plugin install advanced-custom-fields –activate
2 フィールドグループの作成 管理画面 or PHPスクリプト
3 ページ作成 → IDを確定 wp post create –post_type=page
4 カスタムフィールドに値を登録 wp post meta update
5 登録結果の確認 wp post meta list / 管理画面 / get_field()

STEP 1. ACFプラグインのインストール&有効化

wp plugin install advanced-custom-fields –activate –allow-root

確認:

wp plugin list –allow-root

name status version
advanced-custom-fields active 6.7.0

たった1行のコマンドで、ダウンロード → インストール → 有効化まで完了します。


STEP 2. ACFフィールドグループの作成

フィールドグループとは、「どのページに、どんな入力欄を表示するか」を定義するものです。

方法A:管理画面から作成(通常のやり方)

  1. WP管理画面 → カスタムフィールドフィールドグループを新規追加
  2. フィールドを追加(会社名、所在地、電話番号 …)
  3. 表示条件を設定(例:固定ページ「会社案内」に表示)

方法B:PHPスクリプトで一括作成(自動化したい場合)

以下のPHPファイルを作成し、wp eval-file で実行します。

// acf_setup.php
<?php
$group = acf_update_field_group(array(
‘key’ => ‘group_company_info’,
‘title’ => ‘会社情報’,
‘location’ => array(array(array(
‘param’ => ‘page’,
‘operator’ => ‘==’,
‘value’ => ‘9’, // 対象ページのID
))),
‘active’ => true,
));

$fields = array(
array(‘key’=>‘field_company_name’, ‘label’=>‘会社名’, ‘name’=>‘company_name’, ‘type’=>‘text’),
array(‘key’=>‘field_company_address’, ‘label’=>‘所在地’, ‘name’=>‘company_address’, ‘type’=>‘text’),
array(‘key’=>‘field_company_tel’, ‘label’=>‘電話番号’, ‘name’=>‘company_tel’, ‘type’=>‘text’),
array(‘key’=>‘field_company_email’, ‘label’=>‘メール’, ‘name’=>‘company_email’, ‘type’=>’email’),
);

foreach ($fields as $f) {
$f[‘parent’] = $group[‘ID’];
acf_update_field($f);
}

実行方法:

wp eval-file /tmp/acf_setup.php –allow-root

ポイント:

  • key はユニークな文字列(group_xxx, field_xxx)
  • locationvalue にページIDを指定
  • type は text / email / number / image / textarea / select など

STEP 3. ページを作成してIDを確定

ACFの値を登録するには、先にページ(投稿)を作成してIDを確定させる必要があります。

固定ページの場合

wp post create –post_type=page –post_title=’会社案内’ –post_name=’company’ –post_status=publish –allow-root
→ Success: Created post 9. ← この「9」がページID

カスタム投稿タイプの場合

wp post create –post_type=property –post_title=’物件A’ –post_name=’property-a’ –post_status=publish –allow-root
→ Success: Created post 150. ← この「150」が投稿ID

IDの確認方法:

wp post list –post_type=page –fields=ID,post_title –allow-root

ID post_title
9 会社案内
10 サービス
11 ホーム

💡 IDの体系は共通
WordPressは投稿・固定ページ・カスタム投稿タイプすべてを wp_posts テーブルで管理しています。
--post_type が何であっても、wp post meta update に渡すIDは同じ仕組みです。

STEP 4. WP-CLIでACFフィールドに値を登録

ここが本題です。2つのコマンドをセットで実行する必要があります。

4-1. 値を登録する

wp post meta update 9 company_name ‘株式会社ジェイノーム’ –allow-root
wp post meta update 9 company_address ‘滋賀県草津市東矢倉二丁目5番24-5019号’ –allow-root
wp post meta update 9 company_tel ‘077-585-8637’ –allow-root
wp post meta update 9 company_email ‘info@jnome.co.jp’ –allow-root

4-2. ACFリファレンスキーを登録する(★必須★)

wp post meta update 9 _company_name field_company_name –allow-root
wp post meta update 9 _company_address field_company_address –allow-root
wp post meta update 9 _company_tel field_company_tel –allow-root
wp post meta update 9 _company_email field_company_email –allow-root
⚠ なぜリファレンスキーが必要なのか?

ACFは内部的に、各フィールドの値とは別に「このメタキーはACFのどのフィールドに対応するか」という情報を _フィールド名 というメタキーで管理しています。

company_name → 値(株式会社ジェイノーム)
_company_name → ACFフィールドキー(field_company_name)

リファレンスキーがないと、ACF管理画面に値が表示されず、get_field() でも取得できません


STEP 5. 登録結果の確認

5-1. WP-CLIで確認

wp post meta list 9 –allow-root

meta_key meta_value
company_name 株式会社ジェイノーム
company_address 滋賀県草津市東矢倉二丁目5番24-5019号
company_tel 077-585-8637
company_email info@jnome.co.jp
_company_name field_company_name
_company_address field_company_address
_company_tel field_company_tel
_company_email field_company_email

5-2. ACFの get_field() で確認

<?php
echo get_field(‘company_name’, 9);
// → 株式会社ジェイノーム

echo get_field(‘company_tel’, 9);
// → 077-585-8637

ACFの get_field() でも WordPress標準の get_post_meta() でも、正しく値が取得できることを確認しました。


add と update の違い

コマンド 既存なし 既存あり 同キー複数
wp post meta add 新規作成 もう1つ追加(重複する) できてしまう
wp post meta update 新規作成 上書き(安全) しない

ACFは1フィールド1値なので、update を使うのが正解です。
add を使うと同じキーで値が重複する危険があります。


ACFフィールドタイプ別の注意点

フィールドタイプ WP-CLIでの指定方法 難易度
テキスト / テキストエリア 文字列をそのまま指定 ◎ 簡単
数値 / メール / URL 値をそのまま指定 ◎ 簡単
真偽値(True/False) 1(true)または 0(false) ◎ 簡単
画像 wp media import でアップロード → 添付ファイルIDを数値で指定 ○ やや手間
関連(投稿オブジェクト) 投稿IDを数値で指定 ○ やや手間
繰り返し(Repeater) JSONやシリアライズが必要 △ 複雑
柔軟コンテンツ 内部構造が複雑 △ 複雑

実務での活用シーン

  • 案件の初期構築 ─ 会社情報、物件情報、スタッフ紹介など大量のフィールドを一括登録
  • テスト環境の構築 ─ ダミーデータを一括投入してデザイン確認
  • サイト移行 ─ 旧サイトからエクスポートしたデータをスクリプトで一括登録
  • 定期更新 ─ CSVから読み込んで価格や在庫数を一括更新

コマンドまとめ(チートシート)

# ACFインストール
wp plugin install advanced-custom-fields –activate

# ページ作成(IDを確定)
wp post create –post_type=page –post_title=’会社案内’ –post_status=publish

# ID確認
wp post list –post_type=page –fields=ID,post_title

# 値を登録
wp post meta update {ID} {フィールド名} ‘{値}’

# ACFリファレンスキーを登録(★必須)
wp post meta update {ID} _{フィールド名} field_{フィールド名}

# 登録確認
wp post meta list {ID}
wp post meta get {ID} {フィールド名}


検証環境

  • WordPress 6.8.3
  • WP-CLI 2.12.0
  • ACF(Advanced Custom Fields)6.7.0
  • Docker環境(jnome.co.jp ローカル)

作成: Seeds Brains(ジェイノーム業務支援AI)