チェックボックスの条件分岐と出力

チェックボックスのイラスト

Advanced Custom Fieldsのチェックボックスを利用した、条件分岐やループで使う時の関数です。

チェックボックスも、get_field を使って条件を分岐させたり、記事一覧を表示させたりが可能です。

チェックボックスで選択された項目を出力する関数

チェックボックスで選択されている項目の名前を span タグで出力する場合です。そして出力されたspan のclassには、英数字のラベル名がそれぞれ付きます。

PHP

<?php
 $cfcb = get_field_object('subject');
 $cfcbId = get_post_meta($post->ID,'subject');
 $cfcbId = $cfcbId[0];
 if($cfcb) {
 foreach($cfcbId as $v) {
 echo '<span class="ico-'. $v. '">' . $cfcb['choices'][$v] .'</span>';
 }
 }
 ?>

チェックの有無で条件分岐

ACFで設置したチェックボックスの有無で、表示内容を分岐させます。

PHP

<?php if ( get_field( 'フィールド名' ) ): ?>
<!-- チェックが入っている時の表示 -->
<?php else: ?>
<!-- チェックが入っていない時の表示 -->
<?php endif; ?>

上記は、1つの項目に対してチェックが「入っている・いない」で分岐しますが、複数の選択肢で分岐させる場合は以下のように記述します。

PHP

<?php if( get_field('フィールド名') == "選択肢1"): ?>
選択肢1で表示
<?php elseif( get_field('フィールド名') == "選択肢2"): ?>
選択肢2で表示
<?php elseif( get_field('フィールド名') == "選択肢3"): ?>
選択肢3で表示
<?php endif; ?>

チェックした項目を全て li のリストで出力

チェックボックスで選択した全ての項目を li のリストタグで出力する関数です。

PHP

<?php
$fields = get_field('フィールド名');
if( $fields ): ?>
<ul>
<?php foreach( $fields as $field ): ?>
<li><?php echo $field; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

チェックした項目のラベルと名前を全て li のリストで出力

チェックボックスで選択した全ての項目のラベルと、名前を li のリストで出力します。

出力時に、ラベルはspan のclass名に付き、名前はそのままテキストで表示されます。

PHP

<?php
$fields = get_field('フィールド名');
if( $fields ): 
?>
<ul>
    <?php foreach( $fields as $field ): ?>
    <li><span class="test-<?php echo $field['value']; ?>"><?php echo $field['label']; ?></span></li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

項目をチェックした記事を一覧で表示

チェックボックスの項目で、選択した記事を一覧で表示します。

meta_key にはフィールド名。meta_value には選択肢の値を記述して、ループの中には出力させたい内容を記述します。

PHP

<?php
$args = array(
    'meta_key'   => 'sample', //フィールド名
    'meta_value' => 'label', //値(カスタムフィールドの「選択肢」で入力した左側)
    'posts_per_page' => -1 //件数
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<!-- ここに出力の内容 -->
<?php endwhile; endif; ?>
<?php wp_reset_postdata();?>

1 COMMENT

現在コメントは受け付けておりません。