query_posts()

クエリパラメータを使用してループをセットする。

更新2023/10/06

query_posts() は、ループを回す際に取得したい情報(クエリ)を設定してメインループを変更するというコードです。テーマやプラグインでの使用は目的とされていないので、可能な限り使用しないことが推奨されています。

使い方

query_posts( $query )

【返り値】投稿オブジェクトまたは投稿IDの配列。

パラメーター

  • $query (array | string) 必須

    WP_Query引数の配列または文字列。

詳細・注意事項

もし query_posts() が使用されている場合は wp_reset_query() を使用します。このコードによって元のメインクエりが復元されます。

<?php
  $args = [
    'post_type' => 'post',
    'posts_per_page' => 5,
  ];
  query_posts($args);
  query_posts('posts_per_page=10&cat=10&showposts=3');
  if (have_posts()): while (have_posts()): the_post();
?>
  <!-- 〜〜〜 投稿の表示 〜〜〜 -->
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php endif; ?>

query_posts() はメインクエリをオーバーライドするもので、問題が発生する可能性が高くなります。公式でも「プラグインやテーマ、ループ内での使用すべきでない」と書かれています。

特定の投稿を取得する際には WP_Query または get_posts() を使用し、メインクエリを変更するのであれば pre_get_posts での変更が推奨されています。

公式コードファイルとドキュメントはこちら

/wp-includes/query.php

query_posts() - WordPress.org

コード Reference 一覧へ

TOPへ