この記事では、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の値が正確に取得できない場合は、返り値のフォーマットを確認してください。
演算子の優先順位
&&
と ||
は優先順位が異なるため、条件式に括弧を適切に使用する必要があります。
テスト環境での動作確認
複雑な条件分岐を利用する際は、テスト環境で動作確認を行ってください。
大阪のホームページ制作会社TREVOでは、ホームページ制作に関する情報を掲載しています。最短2日で仮サイトを公開するサービスやSEO対策に特化したホームページ制作、オリジナルホームページデザイン、ライティング、リスティング広告、WEBマーケティングなどのサービスをご紹介しています。