2. März 2010

WordPress: Kategorienansicht nach Aktualisierungsdatum sortieren

Die Archiv-Ansicht bzw. Kategorien-Ansicht in WordPress ist eine tolle Sache. Alle Artikel werden über einen einfachen Loop in chronologischer Reihenfolge aufgelistet, eine interne Blätterfunktion sowie zahlreiche Pagination-Plugins erleichtern die Navigation.

Tief im WordPress versteckt gibt es jedoch noch die Funktion “modified”. Diese erlaubt es unter anderem, das letzte Aktualisierungsdatum in einem Artikel anzuzeigen und natürlich auch, eine dementsprechend geordnete Liste zu erstellen. Doch der interne Aufruf “query_posts”, der dafür zuständig ist, hakt ein wenig mit der Blätterfunktion. Zudem muss die Kategorie exakt spezifiziert werden, sonst würde keine Trennung mehr erfolgen und alle Beiträge aller Kategorien befänden sich in der Liste.

Abhilfe schaffen ein paar wenige Code-Zeilen, die genau dies verhindern und sich somit die Ausgabe exakt steuern lässt. Im nachfolgenden Beispiel sind die Kategorien 1 und 50 betroffen, die nach dem letzten Aktualisierungsdatum (modified_date) sortiert werden. Alle anderen werden chronologisch nach dem Erstelldatum ausgegeben. In beiden Fällen steht der neueste Artikel wie gewohnt ganz oben.

<?php

// HIER BESTIMMEN WIR DIE KATEGORIEN
if (is_category(array(1,50))) {  

// DIE BLÄTTER-FUNKTION WIRD AKTIVIERT
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

// DIE BEITRÄGE DER KATEGORIE WERDEN NACH AKTUALISIERUNGSDATUM ABGERUFEN
query_posts('orderby=modified&paged=' . $paged .'&cat=' . $cat);

} ?>

// DER LOOP BEGINNT
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<!-- VARIABLEN TITEL / AUSZUG VON JEDEM EINTRAG -->		

// DER LOOP ENDET
<?php endwhile; endif; ?>

<!-- BLÄTTER - FUNKTION -->

// WIR BEENDEN DEN QUERY
<?php wp_reset_query(); ?>

Für Anregungen, Hinweise und Verbesserungen bin ich wie immer dankbar. Zu sehen ist das ganze auch in den beiden Kategorien hier auf BrasilOnline. Die Projekte sind nach “Modifizierungsdatum” sortiert, der Newsblog nach “Erstelldatum”.