ACF カスタムフィールドで論理演算を使用した条件分岐

執筆・編集 板浪 雅樹2005年から WEB 業界一筋。500サイト超を手がける SEO・WordPress のエキスパート。「公開後こそ本番」を掲げ、データ分析とユーザー視点で成果を引き出す運用を提案。

2005年に制作会社へ入社後、プログラマーからキャリアをスタート。サーバー構築・データベース設計で培った技術を強みに、WordPress テーマ/プラグイン開発やサイト移行の難案件を多数担当してきました。
2010年以降は SEO エンジニアとしても活動領域を拡大。コンテンツ設計・内部リンク最適化・高速化チューニングにより、競合の激しいビッグキーワードで上位獲得を実現してきました。
現在は TREVO のウェブディレクターとして、要件定義から運用改善まで一気通貫でリード。AI ライティングや GA4/Looker Studio を活用したレポーティング手法を開発し、「数字で説明できるサイト運用」をポリシーにクライアントの ROI 最大化を支援しています。
趣味/強み:筋トレとランニングで日々の集中力をキープ。複雑な課題を“仕組み”で解決するのが得意。
モットー:「サイトは資産。改善を止めた瞬間から価値は目減りする」
この記事では、ACF(Advanced Custom Fields)の繰り返しフィールドなどで、複数のサブフィールドを条件分岐で組み合わせて表示する方法を解説します。
今回の例では、○○○、△△△、▼▼▼ のいずれかに情報が入っている場合に内容を表示するサンプルコードを紹介しています。
サンプルケース
○○○、△△△、▼▼▼ のいずれかに情報が入っている場合に、記述した内容を表示します。
論理和(||)を用いた条件分岐は動作確認済みですが、その他の論理演算については未確認です。
他の論理演算子でも動作すると思われますので、確認でき次第追記していきます。
論理和での条件分岐のコード
フィールド名:○○○
フィールド名:△△△
フィールド名:▼▼▼
<?php if (get_field('○○○') || get_field('△△△') || get_field('▼▼▼')): ?>
<!-- 表示したい内容 -->
<p>いずれかのフィールドに値が存在しています。</p>
<?php endif; ?>解説
get_field('フィールド名')
- ACFの関数で、指定したフィールドの値を取得します。
- 値が存在する場合は
trueを返します。
論理和(||)
- いずれかの条件が
trueの場合に条件式がtrueとなります。
論理演算子の種類
論理積
| 式 | 名前 | 動作 |
|---|---|---|
| ○ && △ | 論理積 | ○ と △ がともに true の場合に true |
| ○ and △ | 論理積 | ○ と △ がともに true の場合に true |
論理和
| 式 | 名前 | 動作 |
|---|---|---|
| ○ || △ | 論理和 | ○ または △ のどちらかが true の場合に true |
| ○ or △ | 論理和 | ○ または △ のどちらかが true の場合に true |
|| を推奨
一般的に、|| を使用する方が優先順位を明確にしやすく、直感的です。
or を使用する場合
優先順位の低さを利用したい特別なケースでのみ使います。
否定
| 式 | 名前 | 動作 |
|---|---|---|
| !○ | 否定 | ○ が true でない場合に true |
get_field('△△△') は通常、フィールドに値が存在する場合に true を返し、値が空や未設定の場合に false を返します。
!get_field('△△△') はその値を反転させ、次のように解釈されます。
get_field('△△△')がfalse(値がない)の場合、!get_field('△△△')はtrueになります。get_field('△△△')がtrue(値がある)の場合、!get_field('△△△')はfalseになります。
if (get_field('○○○') && !get_field('△△△')) {
// 実行される処理
}この条件式は以下のように解釈されます:
get_field('○○○')がtrue(○○○ に値がある)。get_field('△△△')がfalse(△△△ に値がない)。
上記の 両方の条件が満たされる場合 に、ブロック内の処理が実行されます。
△△△ に値が入っている場合にメッセージを表示させたい場合
if (get_field('○○○') && !get_field('△△△')) {
echo 'サブタイトルがあり、説明が設定されていません。';
} elseif (get_field('○○○') && get_field('△△△')) {
echo 'サブタイトルと説明が両方設定されています。';
}もし △△△ に値が入っている場合に別のメッセージを表示させたい場合は、elseif を使って分岐を追加します
排他的論理和
| 式 | 名前 | 動作 |
|---|---|---|
| ○ xor △ | 排他的論理和 | ○または△のどちらかがTRUEでかつ両方ともTRUEでない場合にTRUE |
応用例
繰り返しフィールドで複数の条件を組み合わせる場合
フィールド名: ○○○
サイズ: △△△
説明文: ▼▼▼
<?php if (get_sub_field('○○○') && (get_sub_field('△△△') || get_sub_field('▼▼▼'))): ?>
<p>特定の条件を満たしています。</p>
<?php endif; ?>複雑な条件分岐を組み合わせる
<?php
if (get_sub_field('○○○') && get_sub_field('△△△')): ?>
<p>○○○ があり、△△△ が空です。</p>
<?php elseif (get_sub_field('○○○') xor get_sub_field('▼▼▼')): ?>
<p>○○○ または ▼▼▼ のどちらか一方のみが存在します。</p>
<?php else: ?>
<p>条件を満たしていません。</p>
<?php endif; ?>注意点
get_field() の使用
ACFの値が正確に取得できない場合は、返り値のフォーマットを確認してください。
演算子の優先順位
&& と || は優先順位が異なるため、条件式に括弧を適切に使用する必要があります。
テスト環境での動作確認
複雑な条件分岐を利用する際は、テスト環境で動作確認を行ってください。









