So erstellen und passen Sie WordPress-Auszüge an

Veröffentlicht: 2020-04-16

Auszug ist ein optionaler Text, der einem Beitrag zugeordnet ist. Meistens wird es als Zusammenfassung des Beitrags verwendet. Wenn Sie den neuen Editor verwenden, sehen Sie, dass es in der Seitenleiste eine Option namens Excerpt gibt:

Auszüge in Gutenberg
Auszüge in Gutenberg.

Wenn es nicht angezeigt wird, müssen Sie die Option möglicherweise in den Gutenberg-Einstellungen aktivieren. Klicken Sie auf das Ellipsen-Symbol in der oberen rechten Ecke des Editors und dann auf Optionen :

Gutenberg-Einstellungen
Gutenberg-Einstellungen.

Suchen Sie dann nach Auszug und aktivieren Sie ihn:

So aktivieren Sie das Panel zum Bearbeiten des Auszugs eines Beitrags.
So aktivieren Sie das Panel zum Bearbeiten des Auszugs eines Beitrags.

Je nachdem, wie Ihr Thema konfiguriert ist, wird der Auszug angezeigt, wenn Sie sich Ihre Posts im Blog, die Ergebnisse einer Suche usw. ansehen. In unserem Blog können Sie beispielsweise sehen, wie alle unsere Posts mit den zugehörigen Auszügen dargestellt werden:

Beiträge in Nelios Blog mit ihren Auszügen.
Beiträge in Nelios Blog mit ihren Auszügen.

Ist es nun immer Pflicht, diesen Auszug zu schreiben? Wenn nicht, was macht WordPress? Zeigt es etwas oder gar nichts an? Nun, wir werden diese Fragen beantworten und uns die Optionen genauer ansehen, die WordPress uns bietet, um Auszüge anzupassen.

Wie WordPress-Auszüge funktionieren

WordPress hat zwei Funktionen, um den Auszug eines Beitrags zu erhalten: get_the_excerpt und the_excerpt . Beide sind in wp-includes/post-template.php definiert und wenn Sie sich ihren Quellcode ansehen, werden Sie feststellen, dass alles, was the_excerpt tut, das Ergebnis von echo get_the_excerpt (nachdem es mit the_excerpt ). Im Wesentlichen können wir also grob sagen, dass das einzige, was Sie verstehen müssen, um zu wissen, wie Auszüge in WordPress funktionieren, die get_the_excerpt Funktion ist.

Wie Sie sehen können, ist get_the_excerpt extrem einfach:

 function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); }

Grundsätzlich lädt es einen Beitrag (wenn Sie keinen festlegen, verwendet es den in der WordPress-Schleife verfügbaren Beitrag) und gibt sein post_excerpt Attribut zurück. Es scheint also, dass kein Auszug bedeutet, dass WordPress am Ende nichts anzeigt, oder?

Nicht so schnell, Kumpel.

Beachten Sie, dass diese Funktion den Wert von post_excerpt nicht direkt zurückgibt. Stattdessen wird es mit einem neuen Filter gefiltert: get_the_excerpt. Wenn also mit diesem Filter Aktionen verbunden sind, kann sich das Endergebnis möglicherweise ändern und nicht mehr die leere Zeichenfolge sein …

Und tatsächlich, genau das passiert hier! Wenn wir für einen bestimmten Beitrag keinen Auszug schreiben, sehen wir Folgendes im Frontend:

Automatischer Auszug.
Von WordPress automatisch generierter Auszug.

Die ersten Worte unseres Beitrags werden der Auszug sein, den WordPress generiert.

Die wp_trim_excerpt Funktion

Wenn wir eine schnelle Suche im WordPress-Quellcode durchführen, sehen wir, dass standardmäßig nur eine einzige Aktion mit dem Filter get_the_excerpt ist. Insbesondere in wp-includes/default-filters.php sehen wir, dass eine Funktion namens wp_trim_excerpt eingehakt ist.

Laut WordPress-Dokumentation ist wp_trim_excerpt dafür verantwortlich, einen Auszug mit maximal 55 Wörtern und ggf. angehängten Auslassungspunkten zu generieren. Und hier ist der Schlüssel: Die Funktion geht davon aus, dass das Generieren eines Auszugs „notwendig“ ist, wenn noch keiner vorhanden ist (was im Allgemeinen bedeutet, dass der Benutzer den Auszug nicht im Editor geschrieben hat). Sie können dies im Quellcode der Funktion sehen:

 function wp_trim_excerpt( $text = '', $post = null ) { $raw_excerpt = $text; if ( '' == $text ) { $post = get_post( $post ); $text = get_the_content( '', false, $post ); // [...] » Generates the excerpt using the post content } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); }

Sehen? Wenn es keinen Auszug gibt ( $text ist die leere Zeichenfolge), dann rufe den Inhalt des aktuellen Beitrags ab ( get_the_content from $post ) und verwende ihn, um einen Auszug zu generieren.

Von diesem Punkt an können Sie weiter graben und entdecken, wie WordPress den Quellcode tatsächlich generiert. Ich denke jedoch, dass Sie bereits auf die Idee gekommen sind. Schauen wir uns also noch einmal die Dokumentation an, da sie etwas Licht in dieses Thema bringt:

Gibt maximal 55 Wörter mit gegebenenfalls angehängten Auslassungspunkten zurück. Das Limit von 55 Wörtern kann durch Plugins/Themes mithilfe des Filters excerpt_length werden. Der ' [...]'-String kann von Plugins/Themes mit dem Filter excerpt_more modifiziert werden.

wp_trim_excerpt Dokumentation

Jetzt wissen Sie also alles, was Sie wissen müssen, um die automatischen Auszüge, die WordPress für Ihre Beiträge generiert, vollständig anzupassen.

So passen Sie automatische Auszüge an

Werfen wir einen Blick auf einige Beispiele dafür, wie wir die Filter, die wir im heutigen Beitrag gesehen haben, verwenden können, um automatische Auszüge anzupassen. Denken Sie übrigens daran, dass Sie wahrscheinlich ein Plugin erstellen müssen, um eine dieser Änderungen zu Ihrer Website hinzuzufügen.

a) Wie kann ich die Anzahl der Wörter ändern, die ich in meinen Auszügen haben möchte?

Dies ist eine der einfachsten. Wir haben bereits gesehen, dass uns der Filter excerpt_length zur Verfügung steht, um auszuwählen, wie viele Wörter wir in unseren Auszügen haben möchten, also verwenden wir ihn:

 function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 );

Beachten Sie, dass wir in unserer Funktion als Erstes sicherstellen, dass wir uns im Front-End befinden. Wenn wir uns auf dem Dashboard ( is_admin ) befinden, machen wir besser nichts mit unseren Auszügen. Sobald wir sicher sind, dass wir uns in einer „sicheren Umgebung“ befinden, müssen wir nur noch unsere magische Nummer zurückgeben. In meinem Fall: 100 Wörter.

b) Wie man den Text ändert, der nach einem automatischen Extrakt erscheint

Dies ist auch extrem einfach, weil wir bereits gesehen haben, dass es einen Filter dafür gibt:

 function nelio_clickable_read_more( $more ) { if ( is_admin() ) { return $more; } return sprintf( '<a href="%s">Tell me more!</a>', esc_url( get_the_permalink() ) ); } add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );

In diesem Fall geben wir nur den Text „Erzähl mir mehr!“ zurück. nach der Zusammenfassung und machen Sie daraus einen Link, damit Benutzer darauf klicken können.

c) Wie man die Länge eines Auszugs auf eine bestimmte Anzahl von Zeichen begrenzt

Die Funktion wp_trim_words hat einen Filter mit demselben Namen, den wir verwenden können, um den endgültigen Auszug zu ändern, den WordPress verwendet. Also lass es uns benutzen:

 function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } return mb_substr( $excerpt, 0, 140 ); } add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 );

Der wp_trim_words -Filter gilt sowohl für automatische als auch für benutzerdefinierte Auszüge. In meinem Beispiel möchte ich nur automatisch generierte Auszüge ändern, also muss ich eine neue Bedingung hinzufügen. Wenn Sie sich erinnern, generiert wp_trim_words nur dann einen automatischen Auszug, wenn der ursprüngliche Auszug leer war. Sie müssen dies also nur überprüfen, um das gewünschte Ergebnis zu erhalten.

Beachten Sie andererseits, dass ich mb_substr anstelle der klassischen substr -Funktion verwendet habe. Wenn Sie sich fragen, warum, der Grund ist einfach: Wenn Sie in Ihrem Blog in einer anderen Sprache als Englisch schreiben, verwenden Sie wahrscheinlich Multibyte-Zeichen, und das Kürzen von Multibyte-Strings mit substr kann schief gehen. Lesen Sie die PHP-Dokumentation für weitere Informationen dazu.

d) Wie man Auszüge mit dem ersten Absatz des Inhalts erstellt

Und zum Schluss noch ein Beispiel, wie Sie einen Auszug erstellen, indem Sie genau den ersten Absatz Ihres Beitrags verwenden. Diesmal gibt es keine Erklärung, also achten Sie darauf, was ich tue:

 function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } $content = apply_filters( 'the_content', get_the_content() ); return substr( $content, 0, strpos( $content, '</p>' ) + 4 ); } add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );

Zusamenfassend…

Die große Stärke von WordPress liegt in seiner Erweiterbarkeit. Heute haben wir im Detail gesehen, wie WordPress Post-Auszüge generiert und welche Filter und Funktionen es bietet, um das Endergebnis an Ihre Bedürfnisse anzupassen.

Ich hoffe euch hat der heutige Beitrag gefallen. Teilen Sie es mit Ihren Freunden, damit mehr Menschen die Vorteile von WordPress kennen!

Beitragsbild von Aaron Burden auf Unsplash.