返信先: TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません
フォーラム › 使い方全般 › TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません › 返信先: TOPページ(index.php)に掲載した商品一覧の、ページ送りが動きません
2016年3月7日 6:02 PM
#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(); } ?>
アドバイスくださって、ありがとうございました!
- この返信は8年、 1ヶ月前にmiwarock777が編集しました。理由: コードを追記しました