質問: 記事ページでquery_postsを複数使用してデータを取り込んでいるのですが、 ページを開くのに2秒くらいかかってしまいます。 phpの処理が終わらないとJavaScriptが動作しないのか、 スライドショーもその間動作しないようで2秒間画像が縦並びになります。 query_postsは重くなるから使わない方がいいと良くネット上で書かれていますが、 実際にget postsを使用すると値が直接取れないので、 さらにget_postで値を拾わないといけないのかと思います。 ご相談したいのは、get_postsとget_postで2回データベースにアクセスするのであれば、 対して変わらないのではないかと思うのですがどうなんでしょうか。 (query_postsも2回データベースを読んでいるそうなので) ### 現状のソース ``` 'タクソノミー名', 'terms'=> 'ターム名', 'include_children'=>false, 'field'=>'slug', 'operator'=>'AND' ); } query_posts( array( 'post_type' => "カスタム投稿タイプ名", 'tax_query' => $taxquerysp, 'posts_per_page' => 5, )); if(!empty($wp_query->found_posts)){ // 記事表示のループ if ( have_posts() ) : ?> 近隣物件 sale_price_min)|!empty($post->sale_price_max)){; ?> 価格:sale_price_min/10000)."万円"; ?> - sale_price_max/10000)."万円"; ?> rent_price_min)|!empty($post->rent_price_max)){; ?> 賃料:rent_price_min/10000)."万円"; ?> - rent_price_max/10000)."万円"; ?> position ; ?> ```
回答: query_posts の代わりに使うのであれば pre_get_posts のほうがDBアクセスを減らせる可能性が上がります。ページが呼ばれるたびにメインクエリのためのDBアクセスが発生するため、テンプレートで使わなくても必ず1回アクセスします。 【WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹底解説 | OXY NOTES】 【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】