コードも短くなってすっきり。WordPressのWP_Queryループ内でカスタムフィールドの値を取得するとてもラクな方法

WordPressでいろいろな条件を付けて投稿データを取得できる便利なWP_Queryですが、WP_Queryのループ内でカスタムフィールドの値を取得したくなりました。

例えば、下のようにCodexに書いてあるようなWP_Queryのループがあったとします。

<?php
// クエリ
$the_query = new WP_Query( $args );

// ループ
while ( $the_query->have_posts() ) : $the_query->the_post();
	echo '<li>';
	the_title();
	echo '</li>';
endwhile;

// 投稿データをリセット
wp_reset_postdata();
?>

WP_Queryのループ内でカスタムフィールドの値を取得

ここで、カスタムフィールドに「skill」という名前で「味方の攻撃力を10アップさせる」という値が保存されているとします。

wordpresscustomfieldwpquery00

この値は、以下の方法でラクに取得できます。

<?php
// クエリ
$the_query = new WP_Query( $args );

// ループ
while ( $the_query->have_posts() ) : $the_query->the_post();
	echo '<li>';
	the_title();
	echo $the_query->post->skill;
	echo '</li>';
endwhile;

// 投稿データをリセット
wp_reset_postdata();
?>

コードがやっていること

上のコードの例だと、WP_Queryを使って取得した投稿をループで1件ずつ処理する際に

「$the_query->post->カスタムフィールド(キー)名」

を使って、投稿ごとにカスタムフィールドの値を取得できます。

「get_post_meta」を使って取得もできる

「get_post_meta」を使って取得もできます。

get_post_meta($the_query->post->ID, 'カスタムフィールド(キー)名', true);

コードがちょっと長めではありますね。

「get_post_meta」を使わずにカスタムフィールドの値を取得するラクな方法は、以前教えて頂いたので記事にしています。

こちらは関連する内容としてご参考ください。

著者:bouya Imamura