Je souhaite afficher 5 messages par page, mais limiter le nombre total de messages en boucle.
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'paged' => $paged
);
Supposons que j'ai 100 messages et que les arguments de la requête ci-dessus affichent 5 messages par page et que je puisse voir 20 pages. Alors, comment puis-je limiter le nombre total de messages en résultant pour que dans mon état, il n’affiche que 3 pages? Je n'ai pas besoin d'exactement 3 pages à afficher, mais je voulais limiter le nombre total de messages, à savoir 25 messages, 23 messages. Donc, si je voulais limiter 12 articles, je peux voir 5 articles sur la première page, 5 articles sur la deuxième page et 2 articles restants sur la dernière page.
Vous pouvez utiliser le filtre found_posts
pour modifier le nombre de publications que WordPress signale à partir d’une requête.
add_filter( 'found_posts', 'wpd_found_posts', 10, 2 );
function wpd_found_posts( $found_posts, $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
return 25;
}
}
Vous pouvez définir la limite de publication de deux manières:
1) wp-admin > Settings > Reading
2) By passing the argument query 'numberposts' => 5
Utilisez le 'numberposts' paramètre ...
$args = array(
'post_type' => 'post',
'numberposts' => 25,
'posts_per_page' => 5,
'paged' => $paged
);
Utilisez le hook post_limits
avec une priorité de 2 ...
function my_posts_limit( $limit, $query ) {
return 'LIMIT 0, 25';
}
add_filter( 'post_limits', 'my_posts_limit', 10, 2 );
/**
* Limit the main query search results to 25.
*
* We only want to filter the limit on the front end of the site, so we use
* is_admin() to check that we aren't on the admin side.
*
* We also only want to filter the main query, so we check that this is it
* with $query->is_main_query().
*
* Finally, we only want to change the limit for searches, so we check that
* this query is a search with $query->is_search().
*
* @see http://codex.wordpress.org/Plugin_API/Filter_Reference/post_limits
*
* @param string $limit The 'LIMIT' clause for the query.
* @param object $query The current query object.
*
* @return string The filtered LIMIT.
*/
function wpcodex_filter_main_search_post_limits( $limit, $query ) {
if ( ! is_admin() && $query->is_main_query() && ($query->is_search() || $query->is_home()) ){
return 'LIMIT 0, 25';
}
return $limit;
}
add_filter( 'post_limits', 'wpcodex_filter_main_search_post_limits', 10, 2 );