• advanced custom fieldsを利用しています。

    現在acfでチェックボックスのフィールドを設定しています、単純に値を表示する事は出来るのですがチェックボックスを複数選択した場合にそれぞれを指定した

    異なるタグ等で囲みたいのですが可能でしょうか?
    カスタムフィールド
    □荒川区 □江東区 □渋谷区 □港区
    の時に全てのラベル(値)を選択した時や個別に選択した場合に
    ラベル1には<li class="sample">
    ラベル2には<li class="red">
    等と指定をしたいのです。

    <?php if(get_post_meta($post->ID,'tokyo',true) == '荒川区'): ?>
    <li class="sample">荒川区</li>
    <?php endif; ?>

    としてみたのですが何も表示できませんでした、また、ラジオボタンなら表示が出来るのですが複数選択が出来なくて・・・

    色々と検索して調べてみたのですが解決に至らずこちらで質問させて頂きます、よろしくお願いします

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • モデレーター jim912

    (@jim912)

    advanced custom fields のチェックボックスの場合、カスタムフィールドに配列で格納されています。
    この場合、特定の値が配列に含まれているか否かは、PHPのin_array関数を使うと便利です。

    <?php if ( in_array( '荒川区', $post->tokyo ) ) : ?>
    <li class="sample">荒川区</li>
    <?php endif; ?>

    なお、この分岐を区の数だけ書くのは読みにくいですし、分かりにくくなりますので、区に対応するclass名を予め配列で定義しておき、カスタムフィールドの出力は、ループのみで出力させるとコード量を減らすことができます。

    <?php $ward2class = array(
    	'荒川区' => 'hoge',
    	'江東区' => 'moge',
    	'渋谷区' => 'fuga',
    	'港区'   => 'piyo',
    );
    if ( $post->tokyo && is_array( $post->tokyo ) ) : foreach ( $post->tokyo as $ward ) : ?>
    <li class="<?php echo esc_attr( $ward2class[$ward] ); ?>"><?php echo esc_html( $ward ); ?></li>
    <?php endforeach; endif; ?>
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「カスタムフィールドの値にそれぞれのスタイルを設定したい」には新たに返信することはできません。