Verwendung von get_extended mit Blöcken
Veröffentlicht: – Kommentar hinterlassen
Seit langer Zeit hat WordPress die Möglichkeit, die Länge des Inhalts auf der Beitragsseite anzuzeigen, indem man das „Mehr“-Tag hinzufügt. Die Verwendung des Bereichs bis zu diesem Tag ist einfach über get_the_content
möglich, aber was ist mit dem Rest?
Spezifischer, was ist mit dem Inhalt nach dem „Mehr“-Tag? Hier kommt die Funktion get_extended
ins Spiel. Sie gibt jedoch nicht nur den Inhalt nach dem „Mehr“-Tag zurück, sondern ein Array mit drei Teilen:
main
– Den Inhalt vor dem „Mehr“-Tag (also den Textauszug wie beiget_the_content
).extended
– Der Inhalt nach dem „Mehr“-Tag.more_text
– Der individuelle Text des „Mehr“-Tags, sofern vorhanden. Andernfalls eine leere Zeichenfolge.
Wenn du demnach den Text nach dem „Mehr“-Tag möchtest, brauchst du get_extended( $post->post_content )['extended']
.
Für Beiträge mit dem Block-Editor bist du aber hier noch nicht am Ende.
Zum einen erhält der Inhalt unter extended
auch den „Mehr“-Block selbst (<!-- /wp:more -->
).
Zum anderen ist der Inhalt nicht für die direkte Ausgabe vorbereitet. Hier musst du den Inhalt noch durch ein do_blocks
jagen.
So sieht es demnach aus, wenn du nur den Teil nach dem „Mehr“-Tag von einem Beitrag ausgeben möchtest, der mit dem Block-Editor geschrieben wurde (ich habe auch noch die empfohlene Maskierung via wp_kses_post
hinzugefügt):
echo wp_kses_post( do_blocks( str_replace( '<!-- /wp:more -->', '', get_extended( $post->post_content )['extended'] ) ) );
Code-Sprache: PHP (php)
Ein letzter Hinweis an dieser Stelle: Gibt es keinen „Mehr“-Tag, wird der gesamte Beitragsinhalt im Array innerhalb von main
zurückgegeben und der Bereich extended
ist leer.