til/applied-sciences/engineering/wordpress-acf-and-rest-api
wordpress-acf-and-rest-api.mdupdated 2026-07-162846 words
ダブルクリックで英日反転
Applied Sciences · Engineering

WordPress ACF and custom fields — why they don't appear in the REST API

EN

ACF custom fields are saved as post_meta, but the REST API only outputs explicitly registered items — so they are hidden by default. Three fixes exist, and the cleanest requires just a toggle.

What ACF custom fields are

  • ACF (Advanced Custom Fields) is the standard plugin for adding custom input fields to WordPress posts.
  • Fields like "price", "rating", or "person in charge" extend the built-in title/body/category set.
  • Field values are stored as WordPress post_meta (post metadata).

The REST API and why fields go missing

  • The REST API (/wp-json/wp/v2/posts) returns post data as JSON over HTTP.
  • Only explicitly registered items appear in the response — post_meta is excluded by default.
  • Hitting the endpoint returns title/content/excerpt but not ACF field data.

Three solutions

  • 1. Enable "Show in REST API" in the ACF field group settings (ACF ≥ 5.11) — adds an acf key to the response.
  • 2. Call register_rest_field() in PHP (functions.php or a plugin) for fine-grained control.
  • 3. Install the "ACF to REST API" plugin — quick option for older ACF versions, but adds a dependency.

Relevance to headless WordPress

  • Headless WordPress uses WP only as a CMS; a separate frontend (e.g., Next.js) fetches data via the REST API or WPGraphQL.
  • Heavy ACF usage in a headless setup makes this missing-field problem almost inevitable.
  • Always check "Show in REST API" when creating a field group in a headless project.
ACF fields are hidden from the REST API by design — on ACF 5.11+, one toggle in the field group settings fixes it.
Applied Sciences · Engineering

WordPress ACF カスタムフィールドが​ REST API に​出ない​理由と​3つの​解決策

JP

ACF​(Advanced Custom Fields=カスタム入力欄を​自由に​追加できる​プラグイン)の​フィールドは​ post_meta と​して​保存されるが、​REST API は​デフォルトで​明示登録済みの​項目しか​返さない。

ACF カスタムフィールドとは

  • ACF は​ WordPress に​独自の​入力欄​(カスタムフィールド)を​追加する​定番プラグイン。
  • 「価格」​「評価​(星の​数)」​「担当者」など、​標準セットに​ない​項目を​自由に​定義できる。
  • 入力値は​ WordPress の​ post_meta​(投稿メタデータ)と​して​ DB に​保存される。

REST API と​フィールドが​消える​理由

  • REST API​(/wp-json/wp/v2/posts)は​投稿データを​ JSON で​返す WordPress 標準インターフェース。
  • レスポンスに​含まれるのは​「明示的に​登録された​項目」のみ​ — post_meta は​デフォルト除外。
  • 結果、​title/content/excerpt は​返るが​ ACF フィールドの​値が​ JSON に​現れない。

3 つの​解決策

  • ① ACF の​フィールドグループ設定で​「REST API に​表示」を​オン​(ACF 5.11 以降)​— acf キーで​値が​返る。
  • ② PHP で​ register_rest_field() を​呼び出し、​任意フィールドを​ REST API に​手動登録。
  • ③​「ACF to REST API」​プラグインを​導入 — 旧バージョン向けだが​依存が​増える。

ヘッドレス WordPress との​関係

  • ヘッドレス構成=WordPress を​データ管理専用CMS にし、​表示は​ Next.js 等の​別フロントエンドが​担う​設計。
  • フロントエンドは​ REST API または​ WPGraphQL​(GraphQL で​データ取得する​プラグイン)で​データを​受け取る。
  • ACF を​多用する​ほど​この​「表示されない」​問題に​必ず​直面する​ため、​フィールドグループ作成時に​設定を​確認する。
ACF フィールドが​ REST API に​出ないのは​仕様。​ACF 5.11 以降は​フィールドグループの​「REST API に​表示」を​ ON に​するだけで​解決する。
148 notestil