私のアーカイブクエリには、カスタムのposts_per_page、order、orderby、post_type、およびpagedが含まれています(wp-pageNavi経由)。
array (
'order' => 'DESC',
'orderby' => 'title',
'paged' => 1,
'post_type' => Array (
'post',
'cust_article',
),
'posts_per_page' => 15,
);
私のpost_typeは 'post'と 'cust_article'を含みます。
私は1 'post'と65 'cust_article'を持っています。 posts_per_pageは現在adminで5に設定されています。
私の問題は、最大ページ数が 'post'に含まれるページ数によって制限されることです。 「投稿」が1つしかないため、すべてのページが表示されても(5ページ、posts_per_pageが15に設定されていても)、ページは1に制限されています。
2番目の「投稿」を作成し、posts_per_pageを1に設定すると、2番目のページにアクセスできます。後続のページでも404が返されます。
私は私のカスタムpost_typeアーカイブに同じpost_typeを使って同じクエリを使っていますが、クエリに秒を追加すると同じエラーが発生します。
ページングは投稿数と設定オプションposts_per_pageによって制限されることを私は知っています。 5 pppと21のポスト=>最大5ページ
理論上、2つのpost_typeからの投稿は投稿数を増やすべきです。 5pppと21投稿+ 12投稿=>最大7ページ
Miloは正しいです。ロード時に2番目のクエリを呼び出す代わりにpre_get_posts
を使うべきです。これにより、ページングがはるかに簡単になります。あなたがそれを使用しているどんなorderbyセッションがフックでまだアクセス可能であるべきです。そのためのコードもかなり単純明快です、それはこのようになるでしょう:
/**
* Modify the query before it gets loaded
*
* @param WP_Query Object $query
*
* @return void
*/
function wpse_228230( $query ) {
if( $query->is_admin ) {
return;
}
// Your archive conditional here
if( is_post_type_archive() ) {
$query->set( 'post_type', array( 'post', 'cust_article' ) );
$query->set( 'posts_per_page', 15 );
$query->set( 'orderby', array( 'title' => 'DESC' ) );
}
}
add_action( 'pre_get_posts', 'wpse_228230' );
これはデータベースにヒットする前にメインクエリを修正します。そうでなければWordPressは自然なクエリを取得し、あなたのカスタムWP_Queryをヒットしてデータベースに再度pingを実行します。