WordPress-Auszug (the_excerpt) anpassen

Neben der üblichen Ausgabe eines Blog-Beitrages durch the_content(); kann man auf den Übersichtsseiten von WordPress den Inhalt auch Auszugsweise ausgeben und zwar durch das Template-Tag the_excerpt();. Leider ist dieser Template-Tag nicht so mächtig, wie der erste oder besser gesagt: ihm wurden keine Parameter auf den Weg gegeben und so kann man ihn im Frontend gar nicht anpassen.

Heute hatte ich die Bitte eines Kollegen bekommen, dass alle Beiträge als Auszüge ausgegeben werden und das anstatt der drei Punkte die richtigen Auslassungszeichen (…) erscheinen sollen. dafür begibt man sich in die Datei formatting.php im Ordner wp-includes und dort zwischen den Zeilen 844-862 findet man den Bereich, der für den Auszug zuständig ist:

function wp_trim_excerpt($text) { // Fakes an excerpt if needed
	if ( '' == $text ) {
		$text = get_the_content('');

		$text = strip_shortcodes( $text );

		$text = apply_filters('the_content', $text);
		$text = str_replace(']]>', ']]>', $text);
		$text = strip_tags($text);
		$excerpt_length = 55;
		$words = explode(' ', $text, $excerpt_length + 1);
		if (count($words) > $excerpt_length) {
			array_pop($words);
			array_push($words, '[...]');
			$text = implode(' ', $words);
		}
	}
	return $text;
}

Speziell die Zeile 853 ($excerpt_length = 55;) und die Zeile 857 (array_push($words, '[...]');) sind recht interessant. Mit der ersten Angabe kann man die Anzahl der Wörter anpassen, die ausgegeben werden, wenn zwar ein Auszug ausgegeben wird, aber keiner vom Autor verfasst wurde. Das System gibt dann hier standardmäßig die ersten 55 Wörter des reinen Textes (engl. plain text) aus.

In der zweiten Angabe kann man das Zeichen setzen welches dem Leser symbolisiert, dass es sich hier einen Auszug handelt. Richtigerweise müssten hier die Auslassungszeichen (… oder …) rein, die oft fälschlicherweise (Unwissenheit oder Gemütlichkeit) durch drei Punkte ersetzt werden.

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

15 Kommentare

  1. Wäre es nicht weitaus besser in der functions.php die Funktion nachzubauen? Denn ich kann mir nicht vorstellen, dass ein Hack in den Includes Vorteile mit sich bringt.

    Zudem wird die Datei dann jedesmal wieder überschrieben und die Änderung zunichte gemacht, wenn man WordPress aktualisiert.

  2. @Benni,

    sicherlich, der Weg über die functions.php oder sogar ein Plugin wäre natürlich die elegantere Lösung.

  3. Um die Anzahl der Worte zu verändern , kann man in Theme

    the_content_rss('', TRUE, '', 30)

    verwenden, wobei die 30 für die Anzahl der Worte steht.

  4. Für weitere Ideen zu diesem Thema empfehle ich die Kommentare bei diesem Artikel:

    http://jowra.com/journal/2006/05/wordpress-funktion-the_excerpt/

    Sind entsprechende Lösungen dabei.

    Habari ist diesbezüglich wesentlich cleverer, da kann ich im Template einfach die Core-Funktion abändern und beliebige Parameter hinzufügen/wegnehmen, whatever.

    Denn für jede 3-Buchstaben-Änderung wieder ein Plugin installieren… das kann es nicht sein.

  5. sind doch auch drei Punkte. Verstehe nicht ganz den Satz.

    die oft fälschlicherweise (Unwissenheit oder Gemütlichkeit) durch drei Punkte ersetzt werde

  6. Danke für die nützlichen Hinweise. So weiß ich nun auch, wie ich WordPress vernünftig manipulieren kann um die Außlassungszeichen zu verwenden. Das nervt mich nämlich tatsächlich tierisch, dass es in fast überall falsch ist …

    Wäre vielleicht auch etwas, was man mal in die Community zurückbringen könnte. Eine generelle Korrektur sollte doch im Sinne der Entwickler sein.

  7. Hey,

    wie bekomme ich es hin, dass […] mit dem Artikel verlinkt ist ?
    Bei mir wird davon nix angezeigt.

    Lieben Gruß

  8. Hat jemand eine Idee auf die Frage von Ben (Beitrag 9). Meine PHP-Kentnisse sind nicht die besten. Würde jedoch auch gerne auf den Punkten den Link zum kompletten Artikel setzen. Also nicht nur den Link auf den Title sonder auch auf die drei Punkte. Hat vielleicht jemand eine Idee?

  9. […] perun suchte man bereits nach eine Lösung. Dort muss man jedoch in den PHP-Dateien rumfummeln und […]

  10. […] 17.10.2008 schrieb Perun bereits, wie man den Template-Tag the_excerpt(); anpassen kann, indem es um die weiter lesen […]

Kommentare sind geschlossen.