3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

wordpressでページャー2ページ目以降が見つかりません

Posted at

すこしはまったのでメモします。

結論・解決策・確認ポイント

管理画面 → 設定 → 表示設定 → 1ページに表示する最大投稿数
ここで設定している数値と
WP_Queryの引数、プロパティposts_per_pageを比べます。

wpquery.php

$args     = array(
    'posts_per_page' => 5
);
$my_query = new WP_Query( $args );

ここで
1ページに表示する最大投稿数 > posts_per_pageだと
私の場合2ページ目のリンクを踏んだ時
ページが見つかりませんと出てしまいました。
posts_per_pageの数値を大きくすると問題が解決しました。

状況

Wp_queryで一覧画面を作成。
paginate_links関数でページャー、ページネーションを設置していた。

起こった問題

2ページ目以降が表示されない
『ページが見つかりません』
と出てくる。

ソース

pagenation.php

$paged    = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$args     = array(
    'category_name'  => single_cat_title( '', false ),
    'paged'          => $paged,
    'post_type'      => array( 'page' ),
    'posts_per_page' => 5,
    'page'           => get_query_var( 'page' ),
);

$list_query = new WP_Query( $args );
if ( $list_query->have_posts() ) :
    while ( $list_query->have_posts() ) : $list_query->the_post();
        ?>
        <article class="BlogPagePost">
            <h2>
                <?php the_title(); ?>
            </h2>
            <?php the_excerpt(); ?>
        </article>
    <?php endwhile; ?>
<?php else: ?>
    <p>まだ記事がありません</p>
<?php endif; ?>
<?php

if ( $list_query->max_num_pages > 1 ) {
    //リンク形式を指定
    if ( get_option( 'permalink_structure' ) ) {
        $format = 'page/%#%/';
    } else {
        $format = '?paged=%#%';
    }

    //ページ送りを表示
    echo paginate_links( array(
        'base'      => get_pagenum_link( 1 ) . '%_%',
        'format'    => $format,
        'current'   => max( 1, $paged ),
        'total'     => $list_query->max_num_pages,
        'mid_size'  => 2,
        'prev_text' => '&larr;',
        'next_text' => '&rarr;'
    ) );
}
// クエリとページネーションをクリーンアップ(メインクエリを再設定)
wp_reset_postdata();

はまりポイント

前述した以外にもいろいろと原因があるようです。
自分で経験したポイント以外は書くと混乱を招きかねないので
以下さわりだけ書いてみます。

  • WP_Queryのoffset パラメータをセットすると paged パラメータを無視します。そのためページ送りされません
  • 固定ページではWP_Queryのpagedパラメータを設定する必要がある
  • WP_Queryのmax_num_pagesパラメータが取得できていない
  • wordpress管理画面→設定→表示設定→フロントページの表示の設定が関係することがある
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?