query_posts()関数の概要
query_posts()
は、WordPressのメインクエリをカスタマイズするための関数です。この関数を使用すると、ページのメインクエリを変更して、特定の条件に基づいた投稿を表示できます。ただし、query_posts()
は推奨されておらず、代わりにWP_Query
クラスやpre_get_posts
アクションフックを使用することが推奨されています。query_posts()
を使うと、既存のメインクエリを上書きし、予期しない副作用を引き起こす可能性があります。
パラメータの説明
query_posts()
関数は、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’(降順)で指定します。
使用例
以下の例では、query_posts()
を使用して、カテゴリー ‘news’ に属する投稿を5件取得し、ループ内で表示しています。
query_posts(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news'
));
if (have_posts()) {
while (have_posts()) {
the_post();
?>
<h2><?php the_title(); ?></h2>
<div><?php the_excerpt(); ?></div>
<?php
}
wp_reset_query();
} else {
echo 'No posts found';
}
この例では、カテゴリー ‘news’ に属する5件の投稿が取得され、それぞれの投稿タイトルと抜粋が表示されます。wp_reset_query()
関数は、グローバルなクエリ変数をリセットし、元のメインクエリを復元します。
関連する関数
- WP_Query: 新しいクエリを作成するためのクラス。
query_posts()
よりも推奨されます。 - get_posts(): クエリを実行して投稿の配列を取得します。
WP_Query
の簡易版です。 - pre_get_posts: メインクエリをカスタマイズするためのアクションフックです。最も推奨される方法です。
- wp_reset_query():
query_posts()
の後にメインクエリをリセットします。
これらの関数とフックを理解することで、WordPressでのデータ取得とクエリカスタマイズをより効果的に行うことができます。特に、新しいプロジェクトではWP_Query
やpre_get_posts
の使用を検討してください。