技術ブログ
WP-CLIでACF(Advanced Custom Fields)のカスタムフィールドを一括登録する方法
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プラグインのインストール&有効化
確認:
name status version
advanced-custom-fields active 6.7.0
たった1行のコマンドで、ダウンロード → インストール → 有効化まで完了します。
STEP 2. ACFフィールドグループの作成
フィールドグループとは、「どのページに、どんな入力欄を表示するか」を定義するものです。
方法A:管理画面から作成(通常のやり方)
- WP管理画面 → カスタムフィールド → フィールドグループを新規追加
- フィールドを追加(会社名、所在地、電話番号 …)
- 表示条件を設定(例:固定ページ「会社案内」に表示)
方法B:PHPスクリプトで一括作成(自動化したい場合)
以下のPHPファイルを作成し、wp eval-file で実行します。
<?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);
}
実行方法:
ポイント:
keyはユニークな文字列(group_xxx, field_xxx)locationのvalueにページIDを指定typeは text / email / number / image / textarea / select など
STEP 3. ページを作成してIDを確定
ACFの値を登録するには、先にページ(投稿)を作成してIDを確定させる必要があります。
固定ページの場合
→ Success: Created post 9. ← この「9」がページID
カスタム投稿タイプの場合
→ Success: Created post 150. ← この「150」が投稿ID
IDの確認方法:
ID post_title
9 会社案内
10 サービス
11 ホーム
WordPressは投稿・固定ページ・カスタム投稿タイプすべてを
wp_posts テーブルで管理しています。--post_type が何であっても、wp post meta update に渡すIDは同じ仕組みです。
STEP 4. WP-CLIでACFフィールドに値を登録
ここが本題です。2つのコマンドをセットで実行する必要があります。
4-1. 値を登録する
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_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で確認
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() で確認
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から読み込んで価格や在庫数を一括更新
コマンドまとめ(チートシート)
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)