go41

Anzahl der Worte in the_excerpt ändern

von Joern am 23. Okt. 2008 | Keine Kommentare

Um in einem meiner Blogs die Beitragslänge der Featured Posts bestimmen zu können, hatte ich meist die Funktion the_content_rss benutzt. Dort kann man zum Beispiel die Anzahl der Worte festlegen. Beispiel:

<?php the_content_rss('', TRUE, '', 25); echo "<br />\r\n"; ?>

Nur schneidet das am Ende immer ein Wort durch, was nicht schön aussieht.
Dann habe ich versucht das Problem mit der PHP funktion substr auf get_the_excerpt() anzuwenden, das bringt in etwa ein vergleichbares Ergebnis wenn ich es so aufrufe:

<?php $shortex = substr(get_the_excerpt(), 0, 170);echo $shortex; echo "<br />\r\n"; ?>

Das sieht im Quelltext sogar noch besser aus, nicht so viele white spaces und linefeeds mitten im Text.

Die ultimative Lösung habe ich gerade hier gefunden:
Limit the number of words in excerpt without plugins…

bechster schlägt vor, in die functions.php deines Themes folgenden Code einzufügen:

<?php
function string_limit_words($string, $word_limit)
{
$words = explode(' ', $string, ($word_limit + 1));
if(count($words) > $word_limit)
array_pop($words);
return implode(' ', $words);
}
?>

Wenn im Theme-Verzeichnis keine functions.php ist, dann erstellt man eine mit genau nur dem obigen Inhalt.

Diese Funktion ist somit immer vorhanden (wie ein aktiviertes Plugin), zerlegt den String in einzelne Worte und gibt den String wieder zusammengesetzt mit der im Aufruf gewünschten Zahl von Worten zurück.

Wenn man nun in seinem Theme zum Beispiel in der index.php die Zeile

<?php the_content() ?>

ersetzt durch diesen Code:

<?php $excerpt = get_the_excerpt(); echo string_limit_words($excerpt,35) . " ...<br />\r\n"; ?>

dann erhält man einen Excerpt seines Beitrags mit hier 35 Worten.

Zu sehen auf ezXplain in den Tabbed Feature Posts auf der Startseite. (Diese sind übrigens mit jQuery UI erstellt)

Danke an all die fleißigen Coder…

the_excerpt truncate

Autor:

Du findest mich auch auf Twitter und Facebook!

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.