我认为正确的方法可能是过滤像这样找到的帖子总数。
function my_custom_found_posts_limiter( $found_posts, $wp_query ) {
$maximum_of_post_items = 100; // place your desired value here or read if from option\\setting.
if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->is_post_type_archive( \'blog_posts\' ) ) {
if ( $found_posts > $maximum_of_post_items ) {
return $maximum_of_post_items; // we return maximum amount, so pagination will be aware of this number.
}
}
return $found_posts;
}
add_filter( \'found_posts\', \'my_custom_found_posts_limiter\', 10, 2 );
请参见此处的源代码
https://core.trac.wordpress.org/browser/tags/5.3/src/wp-includes/class-wp-query.php#L3234应用此过滤器后的行可以更好地了解其工作方式。
NB:我用过is_main_query()
有条件和is_post_type_archive
这意味着它将用于主后期归档循环或CPT归档页面循环,但您可以根据需要进行调整。
UPD:已添加!is_admin()
- 检查以使其不会在wp admin中激发。