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

2016 年 3 月 7 日

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

このトピックには6件の返信が含まれ、4人の参加者がいます。1 年前 Yuko.S さんが最後の更新を行いました。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #77701

    miwarock777
    Participant

    TOPページ(index.php)に商品を件数指定で掲載し、ページ送りをつけたいのですが、
    2ページ目以降が404エラーとなってしまいます。ページ数のカウントは表示されています。
    いろんな方法を参考にしながら試したのですが、ダメでした。
    どこかタグがおかしいでしょうか・・・?
    たくさん試しているうちに、よく分からなくなってきてしまいました。。。

    カテゴリスラッグは「item」としています。
    ページ送りのプラグインは「WP-pagenavi」を使いたいです。

    <?php query_posts( array('category_name'=>'item', 'posts_per_page'=>8) ); ?>
        <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); usces_the_item(); ?>
        ==ここにループ==
        <?php endwhile; ?>
        <?php if(function_exists('wp_pagenavi')){wp_pagenavi();} ?>
        <?php else: ?>
        <p>商品がない場合の表記</p>
        <?php endif; wp_reset_query(); ?>

    同じようなことをしたい場合に、他に良い方法があるのでしょうか?

    #77702

    miwarock777
    Participant

    あるサイトで、

    posts_per_pageの件数(XX)が、管理画面の「設定 > 表示設定」で1ページの表示を設定している投稿数より多くないといけない

    というのを見たので、

    管理画面の「設定 > 表示設定」4件、posts_per_page を16件とし、
    下記のようにしたところ、2ページ目までは表示されるようになりましたが、
    3ページ目以降が404になってしまいます。

    これはどういう現象なのでしょうか…?

    <?php query_posts('cat=22&posts_per_page=16&paged='. $paged); ?>
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <?php
        usces_the_item(); //オブジェクト準備
        usces_have_skus(); //ループ用フラグ立てる
        ?>
        ==ここにループ==
    	<?php endwhile; ?>
        </ul>
        <?php if(function_exists('wp_pagenavi')){wp_pagenavi();} ?>
        <?php else : ?>
        <p>商品がない場合の表記</p>
        <?php endif; wp_reset_query(); ?>
    #77705

    nanbu
    Participant

    こんにちは

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

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

    もしくは、商品一覧部分を ajax 化するという手もあるかと思います。

    #77707

    miwarock777
    Participant

    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 年前に  miwarock777 さんが編集しました。理由: コードを追記しました
    #77790

    Yuko.S
    Participant

    お世話になっております。

    先日、有料のWCEX Mobileを購入しカスタマイズ中です。
    スマホの表示で苦戦しせおります。
    トップページに商品のお勧め、新商品、お供えの一覧を表示したのですが
    新商品の方が商品が3こしか表示されず、ページ送りも作動しません。
    お勧め商品は問題なく作動しています。
    現在はページ送りは削除しています。
    どのようにすれば作動するかご教示下さい。

    ホームページは http://fleur-kira.com 

    何卒宜しくお願い致します。

    #77804

    yasumax
    キーマスター

    こんにちは。

    Yuko.Sさん>
    本トピックと質問内容が異なりますので、新たにトピックを立てなおしてください。
    また、該当箇所は「Roto」というスワイプなどで横スクロールできるように高さを固定しています。
    全件表示する場合は、スタイルの調整も必要になってきます。

    #77810

    Yuko.S
    Participant

    こんにちは。

    yasumaxさん

    高さが関係していたのですね。
    初歩的な質問で申し訳ありません。
    先ずはスタイルの変更をしてみます。
    ありがとうございました。

7件の投稿を表示中 - 1 - 7件目 (全7件中)

このトピックに返信するにはログインが必要です。