WP_Queryで投稿データをまとめて取得する方法

WP_Query

WP_Queryを使うと、投稿IDやタイトル、本文、カテゴリーなどをまとめて取得できます。ループ外でも同じように使えるので、任意の場所で投稿データを処理したいときに便利です。

基本のコード

PHP
$query = new WP_Query([
  'post_type'      => 'post',   // 投稿タイプ
  'posts_per_page' => -1,       // 全件取得
]);

if ( $query->have_posts() ) {
  foreach ( $query->posts as $post ) {
    // 投稿データをここで扱う
  }
}
wp_reset_postdata();

取得できる主なデータ

WP_Queryが返す$postオブジェクトには、以下のような情報が入っています。

プロパティ / 関数内容
$post->ID投稿ID
$post->post_titleタイトル
$post->post_content本文
$post->post_excerpt抜粋
$post->post_date投稿日
$post->post_modified更新日
$post->post_author投稿者ID
$post->post_status公開状態

例えばタイトルと投稿日のみ取得するなら次のようにできます。

PHP
echo $post->post_title;
echo $post->post_date;

IDだけ欲しい場合

投稿IDだけを一覧で取得したいならfields => 'ids'を使います。

PHP
$query = new WP_Query([
  'post_type'      => 'post',
  'posts_per_page' => -1,
  'fields'         => 'ids',
]);

$ids = $query->posts; // ID の配列

カスタムフィールドやタクソノミーも取得できる

カスタムフィールド(post_meta)

PHP
$value = get_post_meta($post->ID, 'key', true);

カテゴリーやタクソノミー

PHP
$terms = get_the_terms($post->ID, 'category');

アイキャッチ

PHP
$thumb = get_the_post_thumbnail_url($post->ID, 'large');

カスタム投稿タイプの場合

PHP
$query = new WP_Query([
  'post_type'      => 'news',
  'posts_per_page' => -1,
]);

投稿タイプ名を変えるだけで同じように使えます。

まとめ

  • WP_Queryは投稿データを自由に取得できる
  • 投稿ID、タイトル、本文、日付、カスタムフィールドなどを扱える
  • fields => 'ids'でIDのみ取得も可能
  • カスタム投稿タイプにも対応

必要な情報をまとめて取りたいときは、WP_Queryを使ってデータを取得すると管理が楽になる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


WordPressカテゴリー関連関数まとめ

L o a d i n g . . .