Posts per Page for Custom Post Type Archives
Sets how many entries each custom post type archive shows, separately from the blog setting, for example 12 portfolio items or every testimonial on one page.
Opens WPIDE on
Code
// Post type => number per page (-1 = all).
$wpide_archive_per_page = array(
'portfolio' => 12,
'testimonial' => -1,
);
add_action( 'pre_get_posts', function ( $query ) use ( $wpide_archive_per_page ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_post_type_archive() ) {
return;
}
foreach ( $wpide_archive_per_page as $post_type => $count ) {
if ( $query->is_post_type_archive( $post_type ) ) {
$query->set( 'posts_per_page', (int) $count );
return;
}
}
} );
Notes
Use -1 to show all entries on one page. WooCommerce products have their own setting and should not be listed here.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.