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アップさせる」という値が保存されているとします。
この値は、以下の方法でラクに取得できます。
<?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」を使わずにカスタムフィールドの値を取得するラクな方法は、以前教えて頂いたので記事にしています。
こちらは関連する内容としてご参考ください。
このページを共有する