Da ich über dieses Thema schon geschrieben habe, werde ich mich daher hier kurz fassen … ok, ich versuche es. 🙂 Worum geht es? Nehmen wir mal an du möchtest in deiner WordPress-Installation die xy letzten Artikel aus einer bestimmten Kategorie auflisten.
Ich habe das aktuell für meine Infoseite zu Amazon Kindle gebraucht. Dort liste ich die letzten sieben Artikel aus der entsprechenden Kategorie.
Der passende Template-Tag der üblicherweise die letzten Artikel auflistet (wp_get_archives('type=postbypost')
) listet aber Artikel aus allen Kategorien auf. Um die letzten Artikel aus einer Kategorie aufzulisten gibt es aber mehrere Ansätze.
Lösung Nr. 1: Feed der Kategorie
Für jede Kategorie in WordPress wird auch ein Feed generiert. Der Feed der Kategorie-WordPress in diesem Blog ist www.perun.net/kategorie/wordpress/feed/. Also einfach der Kategorie-URL ein feed/ hinzufügen.
Nun könnte man einfach hergehen und ein Feed-Widget einbinden und dort als Quelle die Feed-URL der entsprechenden Kategorie einbinden, siehe den Artikel Neueste Artikel bzw. Loop in der Sidebar.
[adrotate group=”6″]
Lösung Nr. 2: die Code-Variante
An der Stelle im Template, an dem du diesen Code einfügst:
<ul>
<?php $recent = new WP_Query("cat=123&showposts=5"); while($recent->have_posts()) : $recent->the_post();?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_postdata(); ?>
</ul>
werden die letzten fünf Artikel der Kategorie mit der ID 123 ausgegeben. Möchtest du diesen Code innerhalb eines Artikels oder einer Seiten einfügen, dann musst ein PHP-Plugin installieren, zum Beispiel Exec-PHP.
Lösung Nr. 2.1: eigene Funktion
Ist dir der obere Code zu klobig innerhalb des Templates oder des Beitrages, so kannst du auch eine eigene Funktion erstellen. Einfach folgendes in die functions.php einfügen:
<?php function meine_funktion() { ?>
<ul>
<?php $recent = new WP_Query("cat=123&showposts=5"); while($recent->have_posts()) : $recent->the_post();?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_postdata(); ?>
</ul>
<?php } ?>
Danach musst du im Template oder im Beitrag (PHP-Plugin nicht vergessen) lediglich <?php meine_funktion() ?>
einfügen.
Lösung Nr. 3: Plugins
Wem das alles zu unkomfortabel ist, der kann hierbei auf Plugins zurückgreifen. Zum einen wäre dies Category Posts Widget und zum anderen wäre dies Latest Posts by Category Archive.
Ich persönlich finde es allerdings schade, dass für so etwas keine offizielle Funktion bzw. Template-Tag existiert.
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.
wp_get_archives() ist vom Funktionsnamen und von den Einstellungen her offensichtlich eher dazu geeignet Archive aufzulisten. Um Beiträge (posts) aufzulisten, eignet sich get_posts() wohl besser da es sich leichter darauf justieren lässt was angezeigt werden soll.
<ul>
<?php
global $post;
$args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Durch “offset => 1” wird der aktuellste Post ausgeblendet. Der Rest spricht für sich.
Das ist zwar auch nicht ganz so handlich, jedoch denke ich nicht das es für jeden Fall auch eine entsprechende Funktion geben muss. Bei zu vielen Funktionen schlägt recht schnell die 80/20-Regel zu (80% der Benutzer nutzen nur 20% der Funktionen).
Sinnvoller erscheint es mir da sich eine Bibliothek mit eigenen Funktionen anzulegen die man entweder per Hand oder automatisch per Plugin einbindet.
Für JavaScript und CSS gibt es schon unzählige Bibliotheken, komisch das es so was noch nicht für WP gibt.
[…] Die letzten Artikel aus einer bestimmten Kategorie auflisten […]
Ich hab mich jetzt für das letzte Plugin entschieden! Ist ganz gut, vor allem wenn man wirklich nur die letzten Artikel in einer Seite einbinden möchte. Danke dir für den Artikel, hat mir sehr weitergeholfen!
Hallo Vladimir,
wie schreibe ich so eine Funktion, wenn ich Beiträge nicht nur aus einer, sondern aus mehreren Kategorien anzeigen lassen will?
Ich hab es so versucht:
new WP_Query(“cat=6&showposts=4 && cat=1&showposts=4 && cat=28&showposts=4”);
aber das funktioniert nicht, er erkennt die UND-Funktion nicht an und zeigt bloß die vier Beiträge aus der zuerst genannten Kategorie.
Hast Du ‘ne Idee dazu?
Danke und Grüße!