In the wordpress settings => Reading => Blog pages show at most [input field] posts
I have it set to 3 posts at the moment.
On my index, date archives, tag archives, category archives, search results, etc… All pages that use the loop and paging, it shows 3 posts per page now.
My goal is to be able to have different number of results for different pages. ON my index maybe have 3 posts but on search results or archives, show a different number of results per page.
Any ideas how to do this?
This will do it: (add to your theme’s functions.php)
add_action( 'pre_get_posts', 'set_posts_per_page' );
function set_posts_per_page( $query ) {
global $wp_the_query;
if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
$query->set( 'posts_per_page', 3 );
}
elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
$query->set( 'posts_per_page', 5 );
}
// Etc..
return $query;
}