実際にACFを触った際、
「ACFって本当に必要?」
「設定方法や表示方法がよくわからない…」
「値を入れているのに表示されない」
と感じることがありました。
この記事では、初心者の方向けに
・ACFでできること
・カスタムフィールドの作成方法
・PHPでの表示方法
・表示されないときの原因
を、実際につまずいたポイントも含めて解説します。
1.ACFとは
WordPressのACF(Advanced Custom Fields)とは、投稿や固定ページに独自の入力項目(カスタムフィールド)を自由に追加・管理できるプラグインです。固定ページや投稿ページの編集画面を自分好みにカスタマイズすることができます。
主なメリットは以下の通りです。
- 入力ミスを防げる
- デザインを崩さない
- 更新作業を簡単にできる

2.ACFでできることは?
ACFを使うと、以下のようなことができます。
- 商品ページを作る
- FAQを構造化する
- 管理画面をカスタマイズする
端的に言うと「管理画面で入力した内容を、構造化して安定的に表示したい時」です。具体例を出した方が理解しやすいと思うので、いくつか具体例を紹介します。
固定ページや投稿に「決まった項目」を持たせたい時
例:
店舗ページ
住所
電話番号
営業時間
→ 本文に直接書くのではなく、専用の入力欄として分けたい
デザイン上、本文と役割が異なる情報を扱いたい時
例:
ヒーローエリアのキャッチコピー
ファーストビュー用の画像
CTAボタンの文言・リンク先
→ エディタ本文とは別に、レイアウト用のデータとして管理したい
同じ構造のコンテンツを量産する時
例:
実績一覧
実績名
サムネイル
概要
FAQ
質問
回答
→ 毎回HTML構造を考えず、項目ごとに入力したい
繰り返し・入れ子構造のデータが必要な時
例:
料金表(プラン名+複数の項目)
スタッフ一覧(名前・写真・役職を複数人分)
→ Repeater / Group フィールドで構造化データとして扱う
非エンジニアが更新する前提のサイト
例:
運用者:HTMLを知らなくても更新したい
開発者:デザインの自由度を保ちつつ、データの管理が容易になる
→ 入力ミスを防ぎたい
※逆に、ACFが不要なケース
- 単なる文章ページだけ
- デザインや構造が今後変わらない
- 管理者がHTML/CSSに慣れている
3.カスタムフィールドの設定方法
今回は試しに、服のカスタムフィールドを作成します。
以下が完成のイメージです。
商品「とっても暖かいカーディガン」を固定ページに表示させます。

3-1.Wordpress管理画面での設定
WordPress管理画面からACFをダウンロードし、有効化。左側のメニューバーにACFが追加されます。

フィールドグループ画面になっていることを確認し、[+新規追加]ボタンを押します。

フィールドグループタイトルを入力します。(必須項目です)

今回は「商品情報」としました。他と区別できるタイトルを記入すればOKです。

いよいよフィールドを作成していきます。
今回使用する「フィールド名」はPHPで記述する際に使用していきます。PHPとフィールドグループで異なったフィールド名を使うとエラーが出ますので、ハイフンやアンダーバーなど間違えないように気を付けましょう。
まずは画像のフィールドを作成します。
フィールドタイプ:画像
(使用用途:画像を表示)
フィールドラベル:画像を追加
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-image
(使用用途:phpでデータを読み込む際に使用するデータの名前)
戻り値の形式:画像URL
(それぞれ画像に対してカスタムできる自由さが異なります。今回は一番分かりやすい画像URLを選択しています)
入力できたら[閉じてフィールドを追加]ボタンを押します。
(右下の[+フィールドを追加]ボタンでも大丈夫です)

次にタイトル(商品名)のフィールドを作成します。
フィールドタイプ:テキスト
(使用用途:文字数の少ないテキスト入力)
フィールドラベル:タイトルを追加
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-name
(使用用途:phpでデータを読み込む際に使用するデータの名前)
初期値:未記入
(あってもなくてもOK)
入力できたら[閉じてフィールドを追加]ボタンを押します。
(右下の[+フィールドを追加]ボタンでも大丈夫です)

次に商品情報のフィールドを作成します。
フィールドタイプ:テキストエリア
(使用用途:複数行になりそうなテキスト入力)
フィールドラベル:商品情報を追加
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-description
(使用用途:phpでデータを読み込む際に使用するデータの名前)
初期値:未記入
(あってもなくてもOK)
入力できたら[閉じてフィールドを追加]ボタンを押します。
(右下の[+フィールドを追加]ボタンでも大丈夫です)

次にカラーのフィールドを作成します。
フィールドタイプ:選択
(使用用途:どれか1つを選んでページに表示させたい場合)
フィールドラベル:色を選択
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-color
(使用用途:phpでデータを読み込む際に使用するデータの名前)
選択肢:
white : ホワイト
brown : ブラウン
gray : グレー
(左側がPHPでのデータ出力に使うフィールド名:右側が編集画面で表示されるフィールドラベル)
(今回は区切りますがPHPに選択肢を記述しないため、区切りはあってもなくてもOKです)
初期値:未記入
(あってもなくてもOK)
入力できたら[閉じてフィールドを追加]ボタンを押します。
(右下の[+フィールドを追加]ボタンでも大丈夫です)

※もしもフィールドタイプが見つからない場合は、[フィールドを見る]ボタンを押して検索をかけてみましょう。


次にサイズ展開のフィールドを作成します。
フィールドタイプ:チェックボックス
(使用用途:ページに表示させたい選択肢が複数ある場合)
フィールドラベル:サイズ
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-size
(使用用途:phpでデータを読み込む際に使用するデータの名前)
選択肢:
S
M
L
XL
(左側がPHPでのデータ出力に使うフィールド名:右側が編集画面で表示されるフィールドラベル)
(今回は区切りません。PHPには選択肢を記述しないため、区切りはあってもなくてもOKです)
初期値:未記入
(あってもなくてもOK)
入力できたら[閉じてフィールドを追加]ボタンを押します。
(右下の[+フィールドを追加]ボタンでも大丈夫です)

最後に、金額のフィールドを作成します。
フィールドタイプ:番号
(使用用途:数値を入力したい場合。自動でカンマが付与されます)
フィールドラベル:値段を入力
(使用用途:固定ページや投稿ページの編集画面で表示される文言)
フィールド名:item-price
(使用用途:phpでデータを読み込む際に使用するデータの名前)
初期値:未記入
(あってもなくてもOK)

現時点で6つのフィールドができているはずです。
[カートに入れる]ボタンはどの服のページでも共有デザインのため、ACFでは作成しません。

フィールドの下に設定画面があります。
今回は新しく「ACF練習用」という固定ページを事前に新規作成しました。
その固定ページのみに表示したいため、「固定ページ 等しい ACF練習用」 と指定します。
(すべての固定ページに反映したい場合は、「固定ページテンプレート 等しい デフォルトテンプレート」 となります)

ここまでできたら、[変更内容を保存]ボタンを押して保存してください。

3-2.固定ページで反映を確認し、ACFに値を入力
ACF練習用の固定ページに移動します。
画像のようにテキストブロックが生成されていればOKです。
データを入力していきましょう。

使いまわす部分はPHPで記述するため、この商品についてのデータのみ記入します。

3-3.ACFの値をPHPで表示する方法
現時点では、固定ページを公開しても真っ白なページになってしまいます。
編集画面で入力したデータをPHPで表示させるようにします。
PHPと固定ページを紐づける方法はいくつかありますが、今回は特定のページにのみ独自のレイアウトを適用させるため、固定ページのスラッグを利用したテンプレート作成(page-{slug}.php)を採用します。
固定ページの右上、「スラッグ」を、今回は「acf-test」にします。
変更できたらページを公開しましょう。

使用しているテーマ(推奨:子テーマ)配下に「page-acf-test.php」を作成します。

(例えばスラッグを「abc」にしたら、php名は「page-abc.php」、
スラッグを「fashion」にしたら、php名は「page-fashion.php」となります。)
PHPのコード
<?php get_header(); ?>
<main id="content" class="site-content">
<?php if ( have_posts() ) : ?>
<div class="item-list">
<?php while ( have_posts() ) : the_post(); ?>
<article class="item-card">
<?php
$img = get_field('item-image');
if ($img) {
echo '<img src="' . esc_url($img) . '" alt="">';
}
?>
<h3>商品名:<?php the_field('item-name'); ?></h3>
<p>商品情報:<?php the_field('item-description'); ?></p>
<p>カラー:<?php the_field('item-color'); ?></p>
<p>サイズ:<?php the_field('item-size'); ?></p>
<p style="text-align: right" class="price">
税込 <?php echo number_format(get_field('item-price')); ?>円
</p>
</article>
<?php endwhile; ?>
<a href="" class="button">カートに入れる</a>
</div>
<?php endif; ?>
</main>
<?php get_footer(); ?>
the_field() は「値を取得してそのまま表示する関数」get_field() は「値を取得するだけ(表示はしない)関数」という違いがあります。
※ACFで使用する関数について、詳しくはこちらの記事でまとめています。
【WordPress】カスタムフィールドで使う関数一覧 使用例も紹介 Advanced Custom Fields

固定ページを読み込むと、データが表サイトに表示されました。
このままだと見にくいので、少しだけCSSも書いていきましょう。
.site-content{
width: 100%;
}
.item-list{
margin:5rem auto;
display: flex;
flex-direction: column;
align-items: center;
}
.button {
display : inline-block;
text-align : center;
cursor : pointer;
padding : 20px 100px;
text-decoration :none;
background : #D9D9D9;
color : #000000;
line-height : 1em;
transition : .3s;
}
.item-card{
width: 40%;
}
.item-card img{
width: 60%;
margin:0 auto;
display: block;
margin: 0 auto;
}
.price{
margin: 50px 0;
}
.site-header,
footer {
display: none;
}

これで完成です!
4.ACFが表示されない原因
フィールド名のミス
ACFで設定したフィールド名は、PHPでデータを取得する際にそのまま使用します。
例えば:
- ACF側:
item-image - PHP側:
item_image
このように、ハイフン(-)とアンダーバー(_)が異なるだけでも、データは取得できません。
私自身もここでつまずきました。
見た目が似ているため気づきにくく、原因特定に時間がかかりました。
フィールド名は完全一致が必須なので、コピーして使うのがおすすめです。
get_fieldとthe_fieldの違い
ACFで値が表示されない原因として、get_fieldとthe_fieldの使い分けミスもよくあります。
この2つは似ていますが、役割が異なります。
the_field():値をそのまま出力するget_field():値を取得する(出力はしない)
この違いを理解していないと、「値は入っているのに表示されない」という状態になります。
条件分岐ミス
条件分岐の書き方によっても、ACFの値が表示されないことがあります。
- 値が空の場合
- 取得結果が想定と違う形式の場合(配列など)
特に画像フィールドは「戻り値の形式」によって挙動が変わります。
例えば:
- URL
- 配列
- ID
ACFの画像設定で「画像URL」を選択しているのに、PHP側でIDや配列として処理しようとすると、何も表示されないかエラーになります。設定とコードの「戻り値の形式」が一致しているか必ず確認しましょう。
5.同じフィールドを何回も使いまわす
同じフィールドを何回も使いまわしたい!という時は、
・ACF Pro(Repeaterフィールド)
・カスタム投稿タイプ
のどちらかを使用します。
投稿タイプを使用したACFの作り方についてはこちら
6.まとめ
作成できたでしょうか?
ACFは、固定ページや投稿ページの編集画面を自分好みにカスタマイズできるプラグインです。
自由度が高く便利な一方で 、PHP を使用するため、最初はハードルが高く感じるかもしれません。
しかし、基本的な使い方さえ押さえてしまえば、「HTMLに直接書いていた内容を、管理画面から安全に更新できる」という大きなメリットがあります。
小さな実装から取り入れ、少しずつ活用範囲を広げていくことが、ACFを使いこなす近道と言えるでしょう。
ACF関連の記事はこちらから