Webdesign, WordPress Programmierung, Online und Social Media Marketing - Webworker Blog
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.
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.
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');
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.
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.
Sidebar Anzeige der letzten Pingbacks und Trackbacks ohne Plugin - Da beschweren wir uns immer wieder über den Linkgeiz in der deutschen Blogosphäre, aber so wirklich auf die Idee gekommen die Pingbacks und Trackbacks zu belohnen ist noch niemand. Stattdessen [...]
Untertitel für die WordPress Artikel und RSS Feeds – Subtitle ohne Plugin - Vor einiger Zeit schrieb Piet über ein sehr interessantes Plugin, mit welchem man seine Blogartikel mit Untertiteln versehen kann. Aber nicht nur für die Artikel gibt es Untertitel, sondern auch [...]
WordPress Tagcloud bzw. Archive mit nofollow verlinken - Der eine oder andere hat in seinem WordPress Blog die Tagcloud oder auch die Archive als Widget bzw. manuell über die Sidebar eingebunden. Die Verlinkungen der einzelnen Tags und Archive [...]
Letzte Kommentare ohne WordPress Plugin oder Widget anzeigen - Letzte Kommentare können in WordPress über das Standard-Widget angezeigt werden. Es gibt aber auch das eine oder andere Plugin für die letzten bzw. neuesten Kommentare. Für alles, was halbwegs ordentlich [...]
Anzahl der Artikel und Kommentare anzeigen - Um die Anzahl aller Artikel und/oder der Kommentare in seinem WordPress Blog anzuzeigen nutzt der ein oder andere Blogger ein Plugin. Da WordPress relativ einfach selbst an diese Zahlen kommt, [...]