WordPressのカスタマイズでquery_postsを使用する際の注意点を記録しておきます。
というのも、query_postsの仕様を把握していない箇所で意図しない動きをした為です。
意図しない動き
何が起きたかと言うと、query_postsをfunction.phpに記載してショートコードでフロントページから呼び出しました。呼び出したところまでは良かったのですが、呼び出し元の記事の後ろにquery_postsでループさせた記事の本文が表示されてしまいました。
query_postsの何かが残ってしまったようです。
これを解消するにはquery_postsを使用した後にwp_reset_queryをしないといけなかったようです。
そもそも、「query_posts() はメインクエリを置き換えてしまうため、利用は推奨されません。どうしても必要な場合にのみ使うようにしてください」と記載がありました。
本来別のクエリを使用する場合はWP_Queryを使用しないといけなかったようです。
表示件数の指定
また、別件ですがクエリの件数は「設定」画面でデフォルト設定にしてある件数が反映されるようです。件数を自分で指定したい場合は引数posts_per_pageに値を設定する必要がありました。全件の場合は-1でした。
まとめ
クエリを使用する場合はWP_Queryを使用する。
どうしてもquery_postsを使用する場合はwp_reset_queryをする。
件数の指定はposts_per_page
全件は-1