Im vorigen Schritt konnten Sie sehen wie man eine Tabelle mit WordPress über benutzerdefinierte Felder erstellt und über ein separates Design ausgibt. Eine Tabelle wird noch interessanter wenn man Sie nach verschiedenen Spalten sortieren kann. Als Beispiel dient weiterhin unsere Notebook-Übersicht. Hier sind verschiedene Informationen zu unseren Notebook-Tests eingetragen. Die Spalten sind Name, Displaygröße, Prozessor, RAM, Grafk, Festplatte … bis Preis.

WordPress Tabelle sortieren
Wenn Sie nun auf die Spaltenüberschrift klicken sortiert sich die Spalte neu entsprechend der gewählten Spalte. An der URL können Sie schon erkennen wie das Ganze funktioniert. Die Seite https://www.tipps-archiv.de/notebook-test-uebersicht?sort=CPU sortiert nach der CPU / dem eingebauten Prozessor. Diese Information wird an das Skript übergeben. bei sort=Preis wird nach dem Preis sortiert.

Sortierlinks einbauen
Verlinken Sie die Spaltenköpfe Ihrer Tabelle mit geeigneten Suchworten. Dabei linken Sie wieder auf die gleiche URL, nur hängen Sie an diese ?sort=Name an. Dieser Parameter wird am Anfang der Seite abgefragt. Der Code hierfür lautet:

<?php
$sortierung = trim(strip_tags($_GET[’sort‘]));
?>

Parameter übergeben
Im letzten Beispiel war die Sortierung fest nach dem Datum vorgegeben. Die Sortierreihenfolge kann man aber auch recht pfiffig über die Inhalte dre benutzerdefinierten Felder realisieren. (Siehe auch Query nach benutzerdefinierten Feldern sortieren).

query_posts(‚orderby=date&cat=29&posts_per_page=99‘);

Diese Abfrage wird nun etwas aufwändiger, und um die Sortierung ergänzt.

query_posts(‚meta_key=‘.$sortierung.’&meta_compare=<=&orderby=meta_value&order=ASC&cat=29&posts_per_page=99');

Beachten Sie, dass in dieser Abfrage $sortierung als Variable steht. Je nachdem welche Inhalte nun übergeben wurden erfolgt eine andere Sortierung. Für $sorierung machen nur die Namen der benutzerdefinierten Felder Sinn.

Validierung
Aus Sicherheitsgründen sollten Sie den Inhalt dieser Variable validieren. Ein Schelm könnte hinter ?sort= jeden Unsinn eingeben der ihm einfällt und so auch möglicherweise Probleme verursachen. Eine einfache Abfrage verhindert dies:

if (!( ($sortierung==’Name‘) OR ($sortierung==’Display‘) OR ($sortierung==’CPU‘) OR ($sortierung==’Preis‘))) $sortierung=’Display‘;

In Worten bedeutet das, wenn nicht die bestimmten Begriffe per Parameter übergeben wurde, nimm einfach Display als Sortierreihenfolge.
Weiterführende Artikel:

Susann, schreibt seit 2006 für das Tipps-Archiv. Bevorzugte Themen: Computer/Hardware, Wordpress, Windows und Internet.