WordPress-Funktion the_excerpt()

06 05 2006

Word­Press bie­tet dem Blog­ger die Mög­lich­keit an ent­spre­chen­den Stel­len einen ver­kürz­ten Aus­zug eines Arti­kels aus­zu­ge­ben. Die geschieht mit der Template-​Funktion the_​excerpt, wel­che lei­der keine Para­me­ter kennt und sich somit nicht ohne wei­te­res anpas­sen läßt. Da ich in mei­nem neuen Theme ver­stärkt von der excerpt-​Funktion Gebrauch mache, störte mich die stan­dard­mä­ßige Ver­wen­dung der Zei­chen­kette […] als Kenn­zeich­nung für das Ende des Artikelauszugs.

Wie immer gibt es natür­lich als Lösung ein Plu­gin, in die­sem Fall nennt es sich »The Excerpt Reloa­ded« und wurde von guff ent­wi­ckelt. Das Plu­gin ist okay, jedoch stellte ich mir wie­der mal die Frage, ob ich für eine kleine Anpas­sung ein gan­zes Plu­gin instal­lie­ren muß. Man kann eine ganze Menge dazu bei­tra­gen, daß Word­Press nicht unnö­tig aus­ge­bremst wird und ein guter Ansatz ist immer, nicht 35 Plugins ein­zu­set­zen. Also suchte ich die Funk­tion die für die Aus­gabe des Excer­pts zustän­dig ist und wurde in der Datei functions-formatting.php im Ver­zeich­nis wp-​includes fün­dig. In Zeile 711 beginnt die Funk­tion wp_​trim_​excerpt():

function wp_trim_excerpt($text) {
  global $post;
  if ( '' == $text ) {
    $text = $post->post_content;
    $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;
}

Der Rest ist sim­pel. Wir tau­schen ein­fach in der Zeile:

array_push($words, '[...]');

die Zei­chen­kette […] gegen den von uns gewünsch­ten Text aus. Ich wollte ein­fach nur drei Punkte (ohne eckige Klam­mern) an diese Stelle set­zen. Um es ganz smart zu machen, ver­wen­dete ich dafür die HTML–Entity …. Wem die Länge des Excer­pts nicht behagt, der kann auch gleich noch die Zeile:

$excerpt_length = 55;

dem­ent­spre­chend anpas­sen. Es ist mir unver­ständ­lich, warum die WordPress-​Entwickler nicht ein­fach die Funk­tion the_excerpt(länge, zei­chen­kette) defi­niert haben. Trotz­dem zeigt sich wie­der, daß nicht auf jeden klei­nen Spat­zen mit gro­ßen Plugin-​Kanonen geschos­sen wer­den muß.

Die Excerpt-​Funktion stellt übri­gens stan­dard­mä­ßig nur den rei­nen Posting-​Text dar. Bil­der, Links usw. wer­den her­aus­ge­fil­tert. Wer sich hier mehr Fle­xi­bi­li­tät wünscht, kann zu oben genann­tem Plu­gin grei­fen, die opti­malste Vari­ante bie­tet Word­Press aller­dings schon von Hause aus: den optio­na­len Auszug:

Optionaler Auszug
Die Mög­lich­keit des selbst­de­fi­nier­ten Excer­pts im Admin-​Panel.

Hier kann man den Text belie­big anpas­sen und auch Bil­der, Links u.ä. verwenden.