Fast jedes WordPress Theme nutzt den Template Tag the_excerpt(), um an bestimmten Stellen automatisch Textauszüge anstatt des kompletten Inhalts eines Beitrags darzustellen. Standardmäßig stellt the_excerpt() die ersten 55 Wörter eines Beitrag dar und das lässt sich auch ohne Weiteres nicht einfach anpassen. Einige Möglichkeiten der Anpassung habe ich kürzlich bereits in einem Artikel erläutert. Wie man nun aber die Länge des Textauszugs je Kategorie anpassen kann, verrate ich Ihnen hier.
Textauszug je Kategorie? Wozu soll das gut sein?
Besonders sinnvoll und hilfreich kann man sowas bei einem Magazin Theme wie BranfordMagazine einsetzen. In der Themedemo sehen Sie, dass der Textauszug in der linken Spalte weniger Wörter verwendet, als der in der mittleren Spalte.
Bisher wurde das im Theme mit einem anderen Template Tag, nämlich the_content_rss(), realisiert. Der ist dafür zwar nicht gedacht, aber in den meisten Fällen funktioniert er. Eben leider nur in den meisten. Es kam durchaus immer wieder vor, dass es nicht funktionierte. Auf jeden Fall möchte man bei diesem Theme erreichen, dass die Artikel der linken Spalte (die in meinem Fall alle der Kategorie mit der ID 7 angehören) nur 25 Wörter darstellen und alle anderen die üblichen 55 Wörter.
Anpassungen in der functions.php
Angenehmer ist es natürlich auch, wenn man solche Anpassungen nur in einer einzigen Datei machen muss und nicht in allen (oder zumindest mehreren) Template Files.
Alles, was Sie tun müssen ist, diesen Code in die functions.php zu kopieren.
add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
if(in_category(7)) {
return 25;
} else {
return 55;
}
}
Natürlich müssen Sie die „7“ gegen die entsprechende ID Ihrer Kategorie austauschen und können die Anzahl der Wörter (25 und 55) Ihren Wünschen entsprechend verändern. Nun werden Textauszüge der Kategorie mit der ID 7 (im Fall der Themedemo die „Featured Articles“) mit 25 und alle anderen mit 55 Wörtern dargestellt. Das lässt sich natürlich auf andere Kategorien erweitern.
Excerpt Länge generell ändern
Natürlich kann man mit der gleichen Funktion die Länge des Textauszugs generell ändern. Dafür notiert man in der functions.php einfach folgendes
add_filter('excerpt_length', 'my_excerpt_length');
function my_excerpt_length($length) {
return 25;
}
Das bewirkt dann, dass the_excerpt() nun grundsätzlich 25 Wörter (statt standardmäßig 55) ausgibt. Natürlich immer nur da, wo der Template Tag auch im Theme verwendet wird.
Hinweis
In dem bereits erwähnten Artikel habe ich geschrieben, dass der Filter erst ab WordPress 2.9 funtkioniert. Das war auch mein Kenntnisstand zu dem Zeitpunkt. Zumindest der Filter für die Länge des Auszugs funktioniert bereits in der aktuellen Version 2.8.6 (vorherige Versionen habe ich nicht getestet).