カテゴリ:
いまだにややこしいと思う、Wordpressのページ送りについて
自分なりにまとめ。

まずはページ送りを実装するうえで大事になる概念「クエリー」について
すこし前までは「query_posts」という関数がよく使われていたのですが、
そのときから使う際には注意が必要だとよく言われていました。
そして最近Wordpressから公式にこの「query_posts」が非推奨の関数と指定されたようです。
そして今後は「pre_get_post」という関数を使っていきましょうとなっているようです。

しかし私自身ここらへん正直よくわかりませんでした。

特に自分の場合だとWordpressで企業サイトなどを作ることのほうが多いので
トップページには会社の情報などをちりばめて、ブログは固定ページにもうけるようなことが多いです。

このときに、この固定ページにもうけたブログの一覧をページ送りするには
いままでほとんど「query_posts」を使ってきました。

[php]
query_posts( 'posts_per_page=5&paged='.$paged );//'paged='.$pagedはページ送り用
while ( have_posts() ) :
the_post();
the_title();
endwhile;
//ここのページ送りを設置する
wp_reset_query();
[/php]
こんなかんじっすね。
[caption width="386" align="alignnone"] ページ送りってちなみにこんなやつです。[/caption]
そして私はこれを「pre_get_post」に置き換えなければいけないのかと勘違いしていたようです。

それは下記、Wordpresフォーラムの回答から勘違いだったとわかったんですね。
・query_postsはメインクエリーを改変するためのもの
・query_postsはメインクエリーを改変するには効率が悪いので、pre_get_postsに切り替えていきましょう
・サブクエリーを発行するにはget_postsまたはWP_Queryのインスタンスを新規に作成しましょう


固定ページなどにブログ一覧なんかを設置する場合は「query_posts」じゃなくて「get_posts」か「WP_Query」で作りましょうってことですね。

なので自分は今は新しく作るWordpressサイトで固定ページなんかでページ送りが必要なものに関しては「WP_Query」を使うようにしています。ちなみに「get_posts」だとページングができまへん。「get_posts」でもできる方法知っている人いたら教えてください。

[php]

$my_query = new WP_Query( 'posts_per_page=5&paged='.$paged );//'paged='.$pagedはページ送り用
while ( $my_query->have_posts() ) :
$my_query->the_post(); // global の $post を上書きする

the_title();

endwhile;
//ここのページ送りを設置する
wp_reset_postdata();
[/php]

ちなみにWordpressのクエリーについてはこのサイトがとても参考になります。(というかすべてがここに書かれているようなかんじ)
WordPress ループ&クエリーのモヤモヤを解消しよう!

もし、私のように勘違いしている人の参考になれば幸いでござります。