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を使ってデータを取得すると管理が楽になる。