非推奨のquery_postsをやめてWP_Queryで記事を取得するイマドキWordPressループの書き方

いつのまにやら非推奨になってしまっていたquery_posts()を使った記事取得から、WP_Queryを使った方法にアップデートするメモです。

従来のquery_postsを使った記事の取得

$args = array('post_type'=>'post');
query_posts( $args );
if(have_posts()) : while (have_posts()) : the_post();
//ここに処理
endwhile; endif; wp_reset_query(); 

こんなふうに書くのがこれまでの定番でした。

この方法は、Wp_reset_query()を入れないと、当該ページのメインループに影響を及ぼしてしまうことがあったりと厄介なところもありました。

WP_Queryを使ったイマドキの記事取得

$args = array('post_type'=>'post');
$q = new WP_Query( $args );
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post();
//ここに処理
endwhile;endif; wp_reset_postdata(); 

全体のコード量は若干増えてしまいましたが、これが今時のモダンなWordPressループの書き方です。

ポイントは、query_postsと違って当該ページのメインループに影響を及ぼさないことですね。

この他にもget_posts()を使う方法などもありますが、get_postsは内部でWP_Query()を使っており、やれることの幅も広いこのWP_Query()を使った方法に慣れるほうがよろしいかと思います。

ページの先頭へ