nobee

update: Last updated: 910view

WordPressのカスタムフィールドの値の表示や判別

WordPressのカスタムフィールドの値の表示や判別

カスタムフィールドで投稿した値を出力するのは、あっという間に取得できるんです!

カスタムフィールドの値の表示

カスタムフィールドを使って入力された値を表示したいときは、登録時の名前を指定します。

      <?php the_field('登録時の名前'); ?>
    

登録時の名前は下記の赤枠で入力した部分になります。

カスタムフィールドの登録画面

例えば画像のような社名を表示したい場合は。

      <?php the_field('name'); ?>
    

となるわけです。
これをpタグで囲って表示したいときは。

      <p><?php the_field('name'); ?></p>
    

となるわけです。

カスタムフィールドの値の判別

カスタムフィールドで入力する項目が必須項目ではない場合は、値が入っていないため表示は不要だな、というとき。

値があるかどうかを知りたいですよね。そんなときは。

      <?php if( get_field('name') ) : ?>
        <p><?php the_field('name'); ?></p>
      <?php endif; ?>
    

get_field関数を呼び出し、カスタムフィールドで登録した名前に値があるかどうかを判別し、あればpタグで囲ったnameの値を表示、という風にするだけです。

セレクトボックスの選択肢の全表示

カスタムフィールドでセレクトボックスに設定したすべての選択肢を取得し、固定ページや投稿ページのセレクトボックスに表示をしたいとき。

<select>
<?php
$obj = get_field_object('登録時の名前');
$choices = $obj['choices'];
foreach($choices as $key => $value){
  echo '<option value="'.$value.'">'.$value.'</option>';
}
?>
</select>
    

「登録時の名前」の部分は前述のとおり、フィールドの名前になります。

参考にした記事カスタムフィールド系のプラグインで選択肢定義を取得する

セレクトボックスの選択した項目の表示

複数選択できるセレクトボックスの場合、選択したアイテムを配列で取得し、一つずつ表示します。

$obj = get_field('登録時の名前');
if($obj){
  foreach($obj as $itm){
    echo '<span class="test">'.$itm.' </span>';
  }
}
    

get_fieldとget_fieldsがあるようなので、取得用の関数も色々と学ぶともっと簡単に取得できたりするのかな、、

繰り返しフィールドの絞り込み

カスタムフィールドの絞り込みに、meta_key、meta_valuやmeta_key検索で絞り込みますが、繰り返しフィールドを絞り込むときは、SQL文をLIKEで検索するようです。

詳しくはACFドキュメントのQuery posts by custom fieldsにあります4. Sub custom field valuesの箇所を参考にしてください。

ACFドキュメントでフィールド名等を変更するだけで、絞り込めました!!!

function my_posts_where( $where ) {
    
    $where = str_replace("meta_key = 'group_$", "meta_key LIKE 'group_%", $where);
    return $where;
}

add_filter('posts_where', 'my_posts_where');

        $args = array(
          'post_type' => 'case',
          'posts_per_page' => -1,
          'meta_query' => array(
            'relation' => 'OR',
            array(
              'key' => 'fruits',
              'value' => 'すいか',
              'compare' => 'LIKE',
            ),
            array(
              'key' => 'group_$_item_name',
              'value' => 'ぶどう',
              'compare' => 'LIKE',
            )
          ),
        );
        $query = new WP_Query($args);
    

繰り返しフィールドの登録時のフィールド名とサブフィールド名を「_$_」でつなげてkeyで指定。

これで絞り込めましたっ!!!
「_$_」を「_%_」にしていた私は、この絞り込みだけで3,4時間かかりました(汗)

繰り返しフィールドの表示や取得はWordPressの繰り返しフィールドの作成・表示方法にあります。

share

人気記事