WordPressのカスタムフィールドのデータ取得と表示いろいろ
WordPressのカスタムフィールドに入力したデータを取得する方法と表示する方法です。データを取得するにはいくつか方法がありますので、分かる範囲で書き出してみました。(カスタムフィールドに値があるかないかで表示を分ける条件分岐も追加しました。)
1. get_post_meta() でデータを取得して表示する
パラメータ
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
$post_id
データを取得する投稿のIDを指定します。表示中の投稿を指定するなら $post->ID を指定する。
$key
表示したいカスタムフィールドに入れた名前(日本語で大丈夫)
$single
trueかfalseを指定。falseで配列でデータを出力する。trueで指定されたフィールドの”値”の1つを文字列で出力。
使用例
下のようにテンプレートファイルの表示したい場所へ記入します。
<?php echo get_post_meta($post->ID , '天気' ,true); ?>
例えばカスタムフィールドに ”名前”→天気 ”値”→曇り時々雪でした。 と入力します。
下のような表示になります。
2. get_post_custom でデータを取得して表示する
この関数はカスタムフィールドのすべての情報を配列で取得します。
パラメータ
<?php $custom_fields = get_post_custom($post_id); ?>
$post_id
データを取得する投稿のIDを指定します。なにも指定しなくてもデフォルトで現在の投稿IDが入ります。
使用例
「 ”名前”→天気 ”値”→曇り時々雪でした。 」と「 ”名前”→天気 ”値”→その後晴れた! 」と複数入力し、それを一覧で表示するには、下のように記入します。
<?php $custom_fields = get_post_custom(); // 指定した投稿のすべてのカスタムフィールド情報を取得 $my_custom_field = $custom_fields['天気']; // '天気' というキーを持つカスタムフィールドの値を取得 foreach ( $my_custom_field as $key => $value ) echo $value . "<br />"; ?>
”名前|値”と表示するには、下のようにテンプレートファイルの表示したい場所へ記入します。
<?php $fields=get_post_custom(); foreach($fields as $name => $value) { if(!(preg_match("/^_/", $name)) && $name!== '' ) { echo '<p>'; echo $name; echo '|'; echo $value[0]; echo '</p>'; } } ?>
3. the_meta() でデータを取得して表示する
カスタムフィールドで入力した名前と値を、”名前:値”という形で表示します。簡単に表示ができます。
このタグをテンプレートファイルに記入します。
<?php the_meta(); ?>
4. カスタムフィールドに値があるかないかで処理を分ける条件分岐
カスタムフィールドに値がある時だけ処理や表示をしたい場合は、テンプレートファイルへ以下のように記入します。
<?php $custom_fields = get_post_meta( $post->ID , 'フィールド名' , true ); if(empty( $custom_fields ) === false){ ?> カスタムフィールドが入ってるときの処理 <?php } ?>
カスタムフィールドに値がある時とない時とで処理や表示を変えたい場合は以下のように記入します。
<?php $custom_fields = get_post_meta( $post->ID , 'フィールド名' , true ); if(empty( $custom_fields ) === false){ ?> カスタムフィールドが入ってるときの処理 <?php } else { ?> カスタムフィールドが入ってないときの処理 <?php } ?>
3 Comments & Tracbacks