WordPress標準のカスタムフィールドでの話。
例えば、イベント情報サイトの投稿ページに ‘開催日’ のカスタムフィールドを作りたい場合に、開催日が3日あったとしよう。
- 開催日: 2019年5月11日(土曜日)
- 開催日: 2019年5月18日(土曜日)
- 開催日: 2019年5月25日(土曜日)
入力は単純に ‘開催日’ というキーのカスタムフィールドを3つ追加すれば良い。
しかし、入力した3つぞれぞれの値を表示させるのには一手間かかった。the_meta()
やget_post_meta()
を普通に使うと、デフォルトでカスタムフィールドのキーの値は1つしか取得することが出来無い。
投稿画面では入力内容として保持されているので、表示できないはずはない。
探っていくと、次のようにすることで全ての値を取得できることが分かった。
<?php
$list_data = get_post_meta( $post_id, '', false );
for ($i = 0 ; $i < count( $list_data ); $i++):
list( $key , $val ) = each( $list_data );
if( !is_protected_meta( $key ) ):
foreach ( $val as $valinc ):
?>
<h3><?php echo $key; ?></h3>
<span><?php echo $val; ?></span>
<?php
endforeach;
endif;
endfor;
?>
- get_post_meta の第3引数で false を渡す。
※初期値も false のはずだが渡した場合と挙動が違うような? - for文でキーの数だけカスタムフィールドをリスティング。
- foreachで同一キーに、重複してセットされた値を(キーとともに)表示。
一歩前進。
コメントを残す