• 始めまして、最近wordpressを触り始めた初心者です。

    ネット上でも同じ現象が散見されますが、どの方法を取っても解決できなかったため、質問させて下さい。

    以下の環境で
    Wordpress 3.5.1
    WP-PageNavi 2.83

    以下のようなコードを書きましたが、wp_pagenavi が2ページ目から404エラーになります。

    ———————————————
    args = array(
    ‘post_type’ => ‘post’,
    ‘post_category’ => 3,
    ‘paged’ => $paged,
    ‘posts_per_page’ => 9,
    ……
    );
    $myquery = new WP_Query($args);

    <?php if ($myquery->have_posts()) : ?>
    <?php while ($myquery->have_posts()): $myquery->the_post(); ?>

    /* Do stuff */

    <?php endwhile; ?>

    wp_pagenavi(array(‘query’ => $myquery));

    <?php endif; ?>

    ———————————————

    パーマリンク設定周りの問題かと思い、以下のプラグインも試しましたが、動きませんでした。 パーマリンク設定は、Custom Structureにチェックしており、値は「/%category%/%postname%/」としています。

    Top Level Categories Fix
    Custom Post Type Category Pagination Fix

    ちなみに、クエリ条件指定なしのデフォルトの状態でthe_post()している別の画面では、同現象は確認できませんでした。wp_pagenavi の最後のページまで、正常に表示できました。

    何かお分かりになる方いらっしゃらないでしょうか。
    よろしくお願い致します。

15件の返信を表示中 - 1 - 15件目 (全25件中)
  • モデレーター jim912

    (@jim912)

    Top Level Categories Fix
    Custom Post Type Category Pagination Fix

    これらを外して確認してください。

    トピック投稿者 _ygt

    (@_ygt)

    jim912さん

    ありがとうございます。
    試しましたが、変化はありませんでした。

    $paged の設定は?ここでは、書いていないだけ?
    関係ないですが、’post_category’ なんて指定ありましたっけ?

    トピック投稿者 _ygt

    (@_ygt)

    はい、pagedは以下のように初期化しています。

    $paged = get_query_var(‘paged’) ? get_query_var(‘paged’) : 1;

    また、’post_category’という指定は有効のようで、他画面でget_postsしている個所でも同じ指定方法を取っているのですが、想定通りの挙動をしています。

    wp3.02から

    get_query_var('paged')

    ではなく

    get_query_var('page')

    だったと思います。

    トピック投稿者 _ygt

    (@_ygt)

    $paged = get_query_var(‘page’) ? get_query_var(‘page’) : 1;
    でも試しましたが、変化はありませんでした。

    モデレーター jim912

    (@jim912)

    Top Level Categories Fix
    Custom Post Type Category Pagination Fix

    を外した上で、パーマリンク設定の「変更を保存」をクリックした上で再確認してみてください。あと、キャッシュ系のプラグインを利用しているなら、これも外して置いて下さい。

    WordPressの管理画面の表示設定で、「1ページに表示する最大投稿数」を
    query_postsで指定している件数(posts_per_page)よりも小さい数にしてみてください。

    トピック投稿者 _ygt

    (@_ygt)

    Top Level Categories Fix
    Custom Post Type Category Pagination Fix

    上記2プラグインをdeactiveになっていることを確認の上、削除しましたが、変化はありませんでした。

    また、パーマリンク設定の「変更を保存」をクリックした上で再確認してみましたが、こちらも変化がありませんでした。

    プラグインは現在以下のものが有効になっています。キャッシュ系のプラグインはない認識です。

    Akismet Version 2.5.7
    All In One SEO Pack Version 2.0.1
    Broken Link Checker Version 1.7.1
    Calendar Category Version 1.0.1
    Contact Form 7 Version 3.4.1
    Custom Field Template Version 2.1.5
    Google Analytics for WordPress Version 4.3.3
    Google XML Sitemaps Version 3.2.9
    Portfolio Post Type Version 0.4
    WP-PageNavi Version 2.83

    トピック投稿者 _ygt

    (@_ygt)

    > WordPressの管理画面の表示設定で、「1ページに表示する最大投稿数」を
    > query_postsで指定している件数(posts_per_page)よりも小さい数にしてみてください。

    「1ページに表示する最大投稿数」を1に変えてみましたが、変化はありませんでした。

    またここの設定を変えてしまうと、クエリ条件指定なしのデフォルトの状態でthe_post()している箇所の取得結果件数まで一緒に変わってしまう為、それを避けるために、グローバル$wp_queryを使用するquery_posts()ではなく、WP_Query()を使用して新しい実体を生成しています。この考え方が間違っているのでしょうか・・・

    2ページ目が表示されなくて詰まってる人は結構いるみたいで、先に書いた「paged」のところか、表示件数でほとんどのケースが直ってるようです。後はロジックになんかあるかな…と。

    query_posts()

    を使ってみるのも解決策になるかもしれません。仰るように、デフォルトの検索結果の為に、pagenaviの関数呼び出した後にresetすることを忘れないようにすれば大丈夫かと。

    トピック投稿者 _ygt

    (@_ygt)

    以下の通り修正して試してみましたが、変化はありませんでした。

    args = array(
    ‘post_type’ => ‘post’,
    ‘post_category’ => 3,
    ‘paged’ => $paged,
    ‘posts_per_page’ => 9,
    ……
    );
    query_posts($args);

    <?php if (have_posts()) : ?>
    <?php while (have_posts()): the_post(); ?>

    /* Do stuff */

    <?php endwhile; ?>

    wp_pagenavi();
    wp_reset_query();

    <?php endif; ?>

    上記に修正の上、$pagedに関しても以下の両パターンで試しましたが、変化ありませんでした。

    $paged = get_query_var(‘paged’) ? get_query_var(‘paged’) : 1;
    $paged = get_query_var(‘page’) ? get_query_var(‘page’) : 1;

    ちょっと試しに

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

    これ、コメントアウトしてみて下さい(つまりとっちゃうってこと)
    ※管理画面の表示数は「8」か「10」で。

    トピック投稿者 _ygt

    (@_ygt)

    以下をコメントアウトの上

    // $paged = get_query_var(‘page’) ? get_query_var(‘page’) : 1;

    管理画面の表示数を「8」「10」の二パターンで動作確認してみましたが、変化はありませんでした。

    ちなみに、当クエリは、独自に作成したloop_hogehoge.phpに実装されており、archive.phpからget_template_part()経由で呼び出されます。
    wp_pagenavi()の2ページ目をクリックした後、archive.phpへアクセスしようとしたタイミングで、404エラー判定されてしまう可能性はないでしょうか。

    それも考えられそうですね(検証するが面倒ですが…)。このプラグイン、なんか不安定だなぁ…(使ってないけどw)。

    要するに
    1 2 3 4 5…
    みたいな、ページ切り替えのナビ使いたいわけですよね?解決策になってないですけど、自分で書いちゃダメなのかな?

15件の返信を表示中 - 1 - 15件目 (全25件中)
  • トピック「WP_Queryでwp_pagenaviが2ページ目から404エラーになります」には新たに返信することはできません。