Hat nun geklappt mit folgenden Code.
Kann ich ihn unbeschadet rein machen?
PHP
/**
* Absoluter Fix für Bard: 1 Classic + 4 Grid = 5 Posts.
* Manuelle Berechnung des Offsets, um Dubletten zu verhindern.
*/
function custom_bard_absolute_fix( $query ) {
if ( ! is_admin() && $query->is_main_query() && ( $query->is_home() || $query->is_archive() ) ) {
$posts_per_page = 5; // Deine Zielanzahl (Gesamt)
$paged = max( 1, get_query_var( 'paged' ), get_query_var( 'page' ) );
// WordPress daran hindern, den automatischen Offset zu nutzen
$query->set( 'posts_per_page', $posts_per_page );
if ( $paged > 1 ) {
// Manuelle Berechnung: (Seite - 1) * 5
// Falls immer noch 1 Post doppelt ist, ändere die Formel zu: (($paged - 1) * $posts_per_page) + 1;
$offset = ( $paged - 1 ) * $posts_per_page;
$query->set( 'offset', $offset );
} else {
// Auf Seite 1 erzwingen wir Offset 0
$query->set( 'offset', 0 );
}
}
}
add_action( 'pre_get_posts', 'custom_bard_absolute_fix', 20 );
/**
* Korrektur der Paginierung (verhindert '404 nicht gefunden' Fehler bei manuellem Offset)
*/
add_filter( 'found_posts', 'custom_bard_pagination_adjustment', 10, 2 );
function custom_bard_pagination_adjustment( $found_posts, $query ) {
if ( ! is_admin() && $query->is_main_query() && ( $query->is_home() || $query->is_archive() ) ) {
return $found_posts;
}
return $found_posts;
}
Alles anzeigen