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 bei get_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.

Schreibe einen Kommentar

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