Webdesign, WordPress Programmierung, Online und Social Media Marketing - Webworker Blog

WordPress: the_excerpt Länge anpassen und mehrfach anders verwenden

the_excerpt

Mit der WordPress Funktion the_excerpt lässt sich so einiges anstellen, wenn ein Auszug aus dem jeweiligen Artikel angezeigt werden soll. Auch kann die Länge von the_exerpt verändert werden. In einer meiner Programmierungen wollte ich aber nicht nur mit einer Länge von the_excerpt arbeiten, sondern benötigte mehrfach andere Längen an unterschiedlichen Stellen. Auch das ist möglich, dazu braucht es Funktionen und Filter, um an diversen Stellen des Themes mit unterschiedlicher the_excerpt Länge arbeiten zu können.

the_excerpt ./. the_content

Zur WordPress Funktion the_content hat the_excerpt den Vorteil, dass HTML Tags sowie auch Grafiken aus the_excerpt automatisch entfernt werden. So eignet sich the_excerpt hervorragend für unterschiedliche Anzeigen z.B. auch in der Sidebar.

Im Contentbereich dagegen arbeitete ich lange Zeit wesentlich lieber mit der WordPress Funktion the_content, die den kompletten Inhalt des Artikels bis zum More-Tag wider gibt. So hatte ich es mir von Anfang an angewöhnt mit dem More-Tag zu arbeiten, so dass es bei der Verwendung von the_content auf der Startseite und in den Archiven nicht zum kompletten Double Content kommt. Ein bisschen Double Content ist nicht wild, aber der gesamte Artikel sollte als solcher nur im Artikel selbst ganz angezeigt werden.

Wer nicht mit dem More-Tag arbeitet, ist auch bei den Übersichtsseiten mit der the_excerpt Funktion besser beraten. Nun kommt es aber auch vor, dass the_excerpt an mehreren Stellen des Themes eingesetzt werden soll und dort auch unterschiedliche Längen von the_excerpt greifen sollten. Mit einer Funktion wie new_excerpt_length kann aber nur einmal die Länge von the_excerpt bestimmt werden und nicht mehrfach unterschiedlich.

new_excerpt_length – Die Länge von the_excerpt grundsätzlich verändern

Diese Funktion new_excerpt_length, die der Vollständigkeit halber nicht unerwähnt bleiben soll, kommt in der function.php des WordPress Themes zum Einsatz. Sie überschreibt die WordPress Standard Länge von the_excerpt. Sobald die Funktion the_excerpt im WordPress Theme verwendet wird, kommt diese hier eingestellte Länge zum Einsatz (mit der Zahl – im folgenden Beispiel 20 – wird die Wortlänge eingestellt):

function new_excerpt_length($length) {
 return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');

Eine weitere the_excerpt Länge einstellen und verwenden

Wenn ich nun aber the_excerpt an einer andere Stelle mit einer anderen Länge verwenden möchte, kann ich auch das mit einer Funktion und einem Filter, den ich nur in der Ausgabe verwende. In der functions.php des WordPress Themes erstelle ich eine neue Länge als Funktion für the_excerpt, die ich z.B. sb_excerpt_length nenne:

function sb_excerpt_length($length) {
 return 15;
}

Auf diese Länge greife ich dann in meiner Template Datei (z.B. sidebar.php) mit einem Filter zu, den ich vor dem Aufruf von the_excerpt setze und danach wieder entferne:

<?php add_filter('excerpt_length', 'sb_excerpt_length'); 
 the_excerpt();
remove_filter('excerpt_length', 'sb_excerpt_length'); ?>

Auf diese Weise kann ich x unterschiedliche Funktionen in der functions.php erstellen (mit jeweils anderem Namen) und diese dann in der entsprechenden Template Datei mit dem entsprechenden Filter versehen aufrufen.

Das Ganze hat den Vorteil, dass nicht die Standard Länge von the_excerpt überschrieben wird, sondern die Länge meines gewünschten Auszugs nur genau dort verwendet wird, wo ich es gerade in meinem Theme brauche.

Beispiel: Die letzten 5 Artikel mit einer the_excerpt Länge von 10 Wörtern in der sidebar.php

Für ein praktisches Beispiel möchte ich die letzten 5 Artikel in meiner sidebar.php anzeigen und der Auszug soll 10 Wörter enthalten. Dazu lege ich zuerst die entsprechende Funktion in meiner functions.php des WordPress Themes an:

function sidebar_excerpt_length($length) {
 return 10;
}

Danach gehe ich in die sidebar.php meines Themes und rufe an entsprechender Stelle mittels einer Abfrage die letzten 5 Artikel auf und versehe sie mit der neuen the_excerpt Funktion als Filter:

<ul>
 <?php $sb_liste = get_posts('numberposts=5');
 foreach ($sb_liste as $post) : setup_postdata($post); ?>
  <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
  <?php add_filter('excerpt_length', 'sidebar_excerpt_length'); 
    the_excerpt();
   remove_filter('excerpt_length', 'sidebar_excerpt_length'); ?>
  </li>
 <?php endforeach; ?>
</ul>

Mit dieser Funktion habe ich mir eine HTML Liste (ul/li) der letzten 5 Artikel aufgerufen, welche den Artikel als Link ausgibt und den Auszug dazu mit 10 Wörtern anzeigt.

Lesetipps mit ähnlicher Thematik:
  • Gern verwendete Suchbegriffe:
  • wordpress excerpt
  • wordpress excerpt länge
  • the_excerpt
  • wordpress the excerpt
  • bild in excerpt wordpress
Blogverzeichnis - Blog Verzeichnis bloggerei.de