サポート » 使い方全般 » カスタムポスト使用時に17ページ以上のページ送りが「404 Not Found」を返す

  • 解決済 yoshio39

    (@yoshio39)


    はじめまして、よしおと申します。

    現在、知人のサイトを構築していてどうしてもわからない件があったのでフォーラムに投稿してみました。
    同じような悩みに遭遇されて解決された方などいらっしゃいましたら教えてください。

    症状としては、カスタムポストを使用したサイトで、フロントページの表示を「最新の投稿 」にして、トップページに通常ポストやカスタムポストを交えて1ページに20件ずつ表示しています。

    具体的には、テストサイトをご覧いただけましたら幸いです。
    http://bbbb.xsrv.jp/kizai

    「← 古い投稿」を押して、ページをどんどん過去にさかのぼっていくとpage16まではうまく表示されるのですが、page17以降が「404 Not Found」を返してしまいます。
    http://bbbb.xsrv.jp/kizai/page/16
    http://bbbb.xsrv.jp/kizai/page/17

    試しに、’posts_per_page’ => ’10’ にして、1ページに10件ずつ表示しても、上記と同じようにpage17以降で「404 Not Found」を返してしまいます。

    ‘posts_per_page’ => ‘-1’にすれば、1ページにすべての通常ポストやカスタムポストが正しく表示されているようです。

    同じような悩みに遭遇されて解決された方などいらっしゃいましたら教えてください。
    よろしくお願いいたします。

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

    (@gatespace)

    症状としては、カスタムポストを使用したサイトで、フロントページの表示を「最新の投稿 」にして、トップページに通常ポストやカスタムポストを交えて1ページに20件ずつ表示しています。

    ここの部分をどのようなコードで実装されているか分かりませんので、想像ですが、
    WordPressのデフォルトのページ送りは「投稿(post_type=post)」を基準にしています。
    カスタム投稿タイプを混ぜることで取得している記事の総数が増えてしまうので、
    (期待より少ない)投稿の総数分の記事を表示仕切った時点で、ページ送りできなくなってるのではないでしょうか?

    is_main_query と pre_get_posts を使った書き方なら大丈夫なはずです。

    トピック投稿者 yoshio39

    (@yoshio39)

    さっそくの返信ありがとうございます。
    そして説明不足ですいません。
    記事取得するのに、以下のコードをループ前に追加しております。

    global $wp_query;
    	query_posts(array_merge(
    		array(
    			'post_type' => array('post','artist-post','kizai-post','gakki-news'),
    			'posts_per_page' => '20',
    			'paged' => get_query_var( 'paged' )
    		),
    		$wp_query->query
    	));

    is_main_query と pre_get_posts というすてきな関数があるのですね。
    自分の勉強不足が露呈しましたが、今からチャレンジしてみます。

    トピック投稿者 yoshio39

    (@yoshio39)

    gatespace様

    ありがとうござました。
    下記コードで無事page17以降も表示されるようになりました。

    function foo_modify_main_queries ( $query ) {
    	if ( ! is_admin() && $query->is_main_query() ) { // 管理画面以外 かつ メインクエリー
    		if ( $query->is_home() ) { // ホームの時
    			$query->set( 'post_type', array('post','artist-post','kizai-post','gakki-news') );
    		}
    	}
    }
    add_action( 'pre_get_posts', 'foo_modify_main_queries' ); // pre_get_postsにフック

    query_postsは非推奨にしようという意見もあがっているようですね。
    最新のWordpress事情に取り残されないように日々精進します。

    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムポスト使用時に17ページ以上のページ送りが「404 Not Found」を返す」には新たに返信することはできません。