web-dev-qa-db-fra.com

Comment limiter le nombre total de publications dans la boucle de requête wp?

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.

2
Bhojendra Rauniyar

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;
    }
}
1
Milo

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
0
Anand

Utilisez le 'numberposts' paramètre ...

$args = array(
'post_type' => 'post',
'numberposts' => 25,
'posts_per_page' => 5,
'paged' => $paged
);

Exemple dans le Codex du développeur

0
Gonzoarte

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 );
0
Gonzoarte

post_limits

/**
 * 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 );
0
ravi patel