サポート » プラグイン » WordPress プラグイン「Advanced Custom Fields」のチェックボタンを出力したい。

  • 解決済 ta-fuji

    (@ta-fuji)


    「Advanced Custom Fields」を使って、リストを作成しております。

    参考サイト
    Advanced Custom Fields

    チェックボタンを片方出力するのでなく、チェックボタンのリストを全出力したい。

    
    <ul>
      <li class="current">独身</li>
      <li>既婚</li>
      <li>離婚</li>
      <li>死別</li>
    </ul>
    

    出力

    ☑独身 □既婚 □離婚 □死別

    という風に出したいのですが、

    
    <?php
    // vars	
    $marriage = get_field('marriage');
    // check
    if( $marriage ): ?>
    <ul>
    	<?php foreach( $marriage as $marriage ): ?>
    		<li class="current"><?php echo $marriage; ?></li>
    	<?php endforeach; ?>
    </ul>
    <?php endif; ?>
    

    出力

    ☑独身 ☑既婚 ☑離婚 ☑死別

    になってしまいます。

    PHP初心者なので、ご教授お願いします。

    • このトピックはta-fujiが5年、 11ヶ月前に変更しました。
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 動作確認をちゃんと行なっていませんが、これでいかがでしょう。

    <?php
    // チェックされていない項目も含めてチェックボックス全体を取得
    $cbobj = get_field_object( 'marriage' );
    // チェックされている項目を取得(配列)
    $marriage = get_field( 'marriage' );
    if ( empty( $marriage ) )	// 一つもチェックされていなければ空の配列にする
    	$marriage = array(); ?>
    <ul>
    <?php // 選択肢ぜんぶをループ
    	foreach ( $cbobj['choices'] as $key => $value ):
    		// $key   : 選択肢の内部コード
    		// $value : 選択肢のラベル(独身, 既婚, 離婚, 死別)
    		// 選択肢がチェックされていたらクラスを付ける
    		$checked = in_array( $key, $marriage ) ? 'class="current"' : ''; ?>
    		<li <?php echo $checked; ?>><?php echo $value; ?></li>
    	<?php endforeach; ?>
    </ul>
    

    こんにちは

    get_field() は選択された選択肢の値のみが返されます。
    すべての選択肢を取得するには、get_field_object() 等を使用します。
    get_field_object() はフィールドの設定および値を一度に取得することができます。
    詳細は下記ページをご覧ください。
    https://www.advancedcustomfields.com/resources/get_field_object/

    例:

    <?php
    $field = get_field_object( 'marriage' );
    if ( $field && $field['choices'] ) {
    	echo '<ul>';
    	foreach ( $field['choices'] as $key => $value ) {
    		$class = ( is_array( $field['value'] ) && in_array( $key, $field['value'] ) ) ? ' class="current"' : '';
    		echo "<li{$class}>{$value}</li>";
    	}
    	echo '</ul>';
    ?>

    すみません、レスが被りましたね・・・

    @ishitaka さんのコードの方が格好良いのでお気になさらず。。。

    トピック投稿者 ta-fuji

    (@ta-fuji)

    gblsm 様、ishitaka 様

    ご丁寧なご説明ありがとうございました。

    
    get_field_object() 
    

    を取得することすら知りませんでした。

    サイトのURLを教えていただきありがとうございます。

    ありがとうございます。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「WordPress プラグイン「Advanced Custom Fields」のチェックボタンを出力したい。」には新たに返信することはできません。