返信先: TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません

2016 年 3 月 7 日

ホーム フォーラム 使い方全般 TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません 返信先: TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません

#77707

miwarock777
参加者

nanbuさん、コメントありがとうございました!

トップページには、本来の global $posts があります。WP-pagenavi はこの本来のループに対してのものとなり、テンプレート内で行っている query_posts() としては正常に動作しません。

なるほどです、WPと同じようにしても動かないわけですね…orz

トップページで、ページングを行いたいという事でしたら query_posts() を使わずに、トップページ本来のループを、pre_get_posts フックを使って作ってやると良いかと思います。

アドバイス通り、pre_get_posts を使いました。
うまくいきましたので、ここに書いておきます!

カテゴリースラッグ「item」の商品を、TOPページに20件表示してページを送り(WP-pagenavi)をしています。

function getitemorder( $query ) {
	if ( is_admin() || ! $query->is_main_query() )
		return;

	global $wp_query, $usces;
	if ( $query->is_home() ) {
		$wp_query->query_vars = $usces->get_item_cat_ids();
		$wp_query->set('category_name','item');
		$wp_query->set('posts_per_page',20);
		return;
	}
}
add_action( 'pre_get_posts', 'getitemorder' );

index.phpのメインループは通常のものです。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
--ここにループ--
<?php endwhile; ?>
<?php else : ?>
--記事がないときの表示--
<?php endif; ?>
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

アドバイスくださって、ありがとうございました!

  • この返信は1 年、 9 ヶ月前に  miwarock777 さんが編集しました。理由: コードを追記しました