Ich möchte 5 Beiträge pro Seite anzeigen, aber die Gesamtzahl der Beiträge begrenzen, die zu einer Schleife führen.
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'paged' => $paged
);
Angenommen, ich habe 100 Posts und die obigen Abfrageargs zeigen 5 Posts pro Seite an und ich kann 20 Pages sehen. Wie kann ich die Gesamtzahl der resultierenden Posts begrenzen, sodass in meinem Zustand nur 3 Seiten angezeigt werden? Ich brauche nicht genau 3 Seiten, um zu zeigen, aber ich wollte den Gesamtbeitrag wie 25 Beiträge, 23 Beiträge begrenzen. Wenn ich also 12 Beiträge begrenzen möchte, sehe ich 5 Beiträge auf der ersten Seite, 5 Beiträge auf der zweiten Seite und die restlichen 2 Beiträge auf der letzten Seite.
Sie können den found_posts
-Filter verwenden, um die Anzahl der Beiträge zu ändern, die WordPress-Berichte aus einer Abfrage ermitteln.
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;
}
}
Sie können das Post-Limit auf zwei Arten festlegen:
1) wp-admin > Settings > Reading
2) By passing the argument query 'numberposts' => 5
Verwenden Sie den Parameter 'numberposts' ...
$args = array(
'post_type' => 'post',
'numberposts' => 25,
'posts_per_page' => 5,
'paged' => $paged
);
Verwenden Sie den Haken post_limits
mit einer Priorität von 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 );