In den wordpress Einstellungen => Lesen => Blogseiten zeigen höchstens [Eingabefeld] Beiträge
Ich habe es im Moment auf 3 Stellen gesetzt.
In meinem Index, in Datumsarchiven, Tag-Archiven, Kategoriearchiven, Suchergebnissen usw. werden jetzt 3 Beiträge pro Seite angezeigt.
Mein Ziel ist es, für verschiedene Seiten eine unterschiedliche Anzahl von Ergebnissen zu erzielen. In meinem Index befinden sich möglicherweise 3 Beiträge. In Suchergebnissen oder Archiven wird jedoch eine andere Anzahl von Ergebnissen pro Seite angezeigt.
Irgendwelche Ideen, wie das geht?
Das wird es tun: (füge die functions.php deines Themas hinzu)
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;
}
Verbesserung der obigen Antwort: hook pre_get_posts
wird als Referenz abgerufen, daher ist kein Aufruf von global
und kein Aufruf von return
erforderlich.
add_action( 'pre_get_posts', 'set_posts_per_page' );
function set_posts_per_page( $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..
}