WP-PageNaviとquery_postsを連携する方法

POSTED: Nov 9, 2012, 1:44 pm
TAGS:

WordPressでスタンダードに使われるページングプラグインWP-PageNavi
WP-PageNaviとquery_postsを併用して、クエリの内容にposts_per_pageなどを入れるとWP-PageNaviが正しく機能しない場合があります。これはWP-PageNaviがquery_postsのクエリを無視し、基本設定を見にいってしまうために起こります。

そこで、WP-PageNaviとquery_postsを連携する方法はないかと。。
調べてみるとwp_pagenavi();にクエリを投げ入れられる引数がありました。

wp_pagenavi(array('query' => $my_query));

このような形式でクエリを入れてやるとページングがクエリ通りに機能するようになります。
具体的な使い方としては、query_postsを使わずに

if(have_posts()):
	$my_query = new WP_Query('cat=13&showposts=15'.'&paged='.$paged);
	while ( $my_query->have_posts() ) : $my_query->the_post();

というようにWP_Queryクラスを使ってクエリオブジェクトを生成しておきます。
そのあとに、ループ外でwp_pagenaviに配列で渡してやります。

wp_pagenavi(array('query' => $my_query));

参考