Ankerlink an den Anfang der Seite
804 2568 2
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 3. Dezember 2023, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Es begann damit, dass auf der Blogstartseite die oben gehaltenen Beiträge zusätzlich angezeigt wurden, sodass die gewählte Anzahl von Beiträgen pro Seite überschritten wurde. Außerdem waren die hervorgehobenen Beiträge nicht als solche erkennbar.

Die hervorgehobenen Beiträge sollten sich nicht nur von den anderen abheben, sondern auch sichtbar sein, wenn man im Blog weiterblätterte. Also machte ich aus dem vorherigen Standard-Loop einen Custom Loop, und schloss sticky posts aus. In einem zweiten Query darüber kamen nur sticky posts in einem anderen Design, um sich, wie gewünscht, von den anderen abzuheben. Doch auf Seite zwei gab es dann keine Sticky Posts mehr zu sehen.

Mit pre_get_posts ging auch nichts, da man mit diesem Hook nur den main_query modifizieren kann. Macht man einen Query zum Main Query, kann man sich hingegen die Eintellungen nicht aussuchen. Ein Main Query über dem Custom Query blieb allerdings stehen, auch wenn man blätterte. Das war ein Ansatz.

Ein Abfrageblock wird zum Main Query, indem man „Abfrage vom Template übernehmen“ aktiviert (lässt). Um nicht oben zu haltende Beiträge auf den Blogseiten aus dem Main Query auszuschließen, kam pre_get_posts zur Anwendung.

function show_sticky_posts_on_all_blog_pages( $query ) {
    if ( $query->is_main_query() && !is_admin()  && is_home() ) {
        $sticky_posts = get_option( 'sticky_posts' );
        $query->set( 'post__in', $sticky_posts );
    }
}
add_action( 'pre_get_posts', 'show_sticky_posts_on_all_blog_pages' );

Der modifizierte Loop, der nur Beiträge anzeigt die nicht sticky sind, bleibt davon unberührt, da es sich dabei ja nicht um den Main-, sondern ein Custom Query handelt.

Hinweis: Das Beispiel bezieht sich auf ein Projekt mit Block Theme und Full Site Editing.

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.