0

wordpressのカテゴリーページに困っていて、ページネーションを表示したいので、過去に開発した他のテンプレートで動作する方法を使いました。

カテゴリIDを取得します

$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID;

ページネーションを宣言する

    $page = (get_query_var('paged')) ? get_query_var('paged') : 1;

    $wpquery = new WP_Query(array(
        'order' => 'DESC',
        'cat' => $cat_id,
        'posts_per_page' => 4,
        'paged'=>$page
    ));

そして、ループの後、ページネーションを表示します

    global $wpquery;
    if( $wpquery->max_num_pages >1){
      $big = 999999999; // need an unlikely integer

      echo paginate_links( array(
     'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
     'format' => '?paged=%#%',
     'current' => max( 1, get_query_var('paged') ),
     'total' => $wpquery->max_num_pages
       ) );
   }

ここに行こうとしたら

http://192.185.20.70/~t1t/tobeus.it/category/press/

最初と 2 番目のページが機能することがわかります。3 番目のページには 404 が表示されます...

「イベント」などの他のカテゴリで

 http://192.185.20.70/~t1t/tobeus.it/category/events/

最初のページだけが機能します...

私はこの奇妙な問題を解決することはできません!

4

1 に答える 1

0

カテゴリ テンプレートのページネーションにも問題がありました。paginate_links 関数の「format」パラメーター「paged」を別のパラメーターに変更してみてください。

例:

「newparam」など、他のパラメータ名を設定します

echo paginate_links( array(
...
'format' => '?newparam=%#%',

次に、あなたのURLから取得します

$page = (get_query_var('newparam')) ? get_query_var('newparam') : 1;

また、functions.php ファイルの 'add_query_vars_filter' 関数で 'newparam' を宣言することを忘れないでください。

他の解決策はうまくいきませんでしたが、これはうまくいきました。正確な理由を説明することはできませんが、2 番目のページがロードされているときなどに、パラメーター 'paged' がどこかで使用されている可能性があります。

この例では、他の変数名を使用してページ番号を渡し、他のページネーション ページが読み込まれるときに、その値を再度「paged」に割り当てて、データベースから正しいデータを読み込むようにします。

于 2014-01-24T22:52:03.277 に答える