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でのデータ取得をより効率的に行い、テーマやプラグインでのカスタムクエリを柔軟に実装できます。