サポート » テーマ » ページングについて:記事がないページ目でも空っぽのページが表示されてしまう

  • 解決済 androids

    (@androids)


    タイトルのとおり、カテゴリページやタグページなど、アーカイブページにおいて、
    もう表示する記事のないページ目でも、404ページではなく、普通に空っぽのページが表示されてしまってます。

    ‘posts_per_page’ => 10 と指定しているので、
    例えば該当する記事が30件しかなければ4ページである/page/4にアクセスすると404.phpのテンプレートが表示されるはずですが、
    category.phpのテンプレートが4ページ目として表示されてしまうといった感じです。

    しかし、何ページも先までというわけでなく、実際に記事数より多い/page/80などを開くと、404が返ってきます。

    これは、管理画面の表示設定では「1ページに表示する最大投稿数」を1件にしていることと関係があるのかと思うのですが、色々とWP_Queryをいじってもうまくいきません。
    1ページや2ページ目では、ちゃんと10件ずつ表示されています。

    どうすれば、本来404を返すべきページ目で404を返すようになるでしょうか。

    <?php
    	$args = array(
    		'paged'=>$paged,
                	'posts_per_page' => 10,
    		'ignore_sticky_posts' => 1,
    		'category_name' => 'hogehoge',
    		'tax_query' => array(array(
    			'taxonomy' => 'post_format',
    			'field' => 'slug',
    			'terms' => 'post-format-status',
    			'operator' => 'NOT IN'
    		))
            );
    
    	$query = new WP_Query($args);
            while ( $query->have_posts() ) {
                $query->the_post();
                get_template_part('article');
            }
    	wp_reset_postdata();
    ?>

    WP_Queryはこういう指定です。
    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • CG

    (@du-bist-der-lenz)

    管理画面の表示設定での「1ページに表示する最大投稿数」と、一致している条件下では動作確認はどうでしょう。

    こんにちは

    メインクエリーの posts_per_page パラメータを、pre_get_posts や parse_query フィルターフック等で変更する方法ではどうでしょうか。

    例)

    function my_pre_get_posts( $query ) {
    	if ( !is_admin() && $query->is_main_query() ) {
    		if ( $query->is_category() ) {
    			$query->set( 'posts_per_page', 10 );
    	//	} else if ( $query->is_archive() ) {
    	//		$query->set( 'posts_per_page', 5 );
    		}
    	}
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );

    ご返信ありがとうございます。

    >「1ページに表示する最大投稿数」と、一致している条件下では動作確認
    こちら、試してみたところ、特に1のときと10のときで違いがありませんでした。

    ご返信ありがとうございます。

    >メインクエリーの posts_per_page パラメータを、pre_get_posts や parse_query フィルターフック等で変更する方法ではどうでしょうか。
    教えていただいたフィルターフックで、posts_per_page がきちんと任意のものに変わり、記事のないページ目で404を返すことができました。
    ありがとうございました。メインクエリなどについて勉強してみます!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。