WP_Query

WP_Queryクラスの概要

WP_Queryは、WordPressのカスタムクエリを作成し、投稿、ページ、カスタム投稿タイプなどのデータを取得するための強力なクラスです。標準の投稿ループをカスタマイズしたり、特定の条件に基づいてデータを取得したりするのに使用されます。このクラスを利用することで、柔軟なクエリを実行し、必要なデータを効率的に取得できます。

パラメータの説明

WP_Queryクラスは多くのパラメータを受け取りますが、以下は主要なものです。

  • ‘post_type’ (文字列または配列): 取得する投稿の種類。デフォルトは ‘post’。
  • ‘posts_per_page’ (整数): 1ページあたりに表示する投稿数。-1を指定するとすべての投稿が取得されます。
  • ‘paged’ (整数): 現在のページ番号。ページネーションに使用します。
  • ‘category_name’ (文字列): 特定のカテゴリーに属する投稿を取得します。
  • ‘tag’ (文字列): 特定のタグが付いた投稿を取得します。
  • ‘meta_key’ (文字列): メタキーに基づいて投稿をフィルタリングします。
  • ‘meta_value’ (文字列): メタバリューに基づいて投稿をフィルタリングします。
  • ‘orderby’ (文字列または配列): 取得する投稿の並び順を指定します。例: ‘date’, ‘title’, ‘rand’ など。
  • ‘order’ (文字列): 並び順を ‘ASC’(昇順)または ‘DESC’(降順)で指定します。

使用例

以下の例では、WP_Queryクラスを使用して、カテゴリー ‘news’ に属する投稿を5件取得し、ループ内で表示しています。

$args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'category_name' => 'news'
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        ?>
        <h2><?php the_title(); ?></h2>
        <div><?php the_excerpt(); ?></div>
        <?php
    }
    wp_reset_postdata();
} else {
    echo 'No posts found';
}

この例では、カテゴリー ‘news’ に属する5件の投稿が取得され、それぞれの投稿タイトルと抜粋が表示されます。wp_reset_postdata()関数は、グローバルな投稿データをリセットし、メインクエリを再び利用可能にします。

関連する関数

  • get_posts(): クエリを実行して投稿の配列を取得します。WP_Queryの簡易版です。
  • query_posts(): メインクエリをカスタマイズしますが、推奨されていません。代わりにWP_Queryを使用します。
  • pre_get_posts: メインクエリをカスタマイズするためのアクションフックです。

これらの関数を理解することで、WordPressでのデータ取得をより効率的に行い、テーマやプラグインでのカスタムクエリを柔軟に実装できます。