OK, ich komme vermutlich mit einem eigenen Loop doch weiter als vermutet. Bessere Tipps sind natürlich dennoch gerne gesehen.
Für alle anderen, die evtl. über eine Suche diesen Thread gefunden haben, hier eine kurze Info woran ich arbeite.
- Ich brauche mehrere Loops auf einer Seite. Sowohl im index.php als auch im archive.php und search.php
- Diese Loops sind keine Dinge die durch ein simples "nicht diese Kategorie" gelöst werden können da ich z.B. auf Tabellen von anderen PlugIns prüfen möchte. Es muss also mal ein zusätzlicher JOIN, manchmal eine zusätzliche Tabelle im FROM und die WHERE-Bedingung angepasst werden.
Mein Ansatz:
1.) den Loop selber aufbauen mit einer eigenen SQL-Abfrage. Das steht im Codex und geht ungefähr so:
$pagelimit=10;
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$pagenum=($page-1)*$pagelimit;
$pageposts = $wpdb->get_results("SELECT wposts.* FROM $wpdb->posts wposts, ....was_ihr_noch_so_braucht...
WHERE ...Eure_Bedingungen...
AND wposts.post_status = 'publish' AND wposts.post_date < NOW()
AND wposts.post_type = 'post'
ORDER BY wposts.post_date DESC
LIMIT ".$pagenum.", ".$pagelimit, OBJECT);
Alles anzeigen
Einfach im Codex nach "get_results" oder "custom query" suchen.
2.) um nun zu sehen, welches SQL WordPress normalerweise absetzt (zum lernen und anpassen der eigenen Query) gibt eine globale Variabe "$request"
Zum anzeigen einfach mal folgendes einbauen:
global $s, $request;
echo "<br/>".$request;
Für die Suche gibt es noch ein globales "$s" mit dem Suchbegriff
Für die Archivseiten gibt es haufenweise globale Variablen die einem sagen, welches Jahr/Monat/Tag/Autor/... geklickt wurde ($cat, $author, $m, $year, $monthnum, $day)
Damit kann man schon ganz schön eine eigene Query zusammensetzen.
Bleibt noch das Problem, dass man u.U. ja alle Postings aus einer gewählten Kategorie UND die Postings aus allen UNTERkategorien haben möchte.
3.) das geht mit der "IN"-Klausel von SQL. Testet mal die $request Ausgabe (s.oben) mit einer Kategorie-Seite - da seht ihr wie das benutzt wird.
Um an alle IDs der Unterkategorie zu kommen klappt folgendes:
$cat_children = $cat.', '.get_category_children($cat, '', ', '); /* für eine Liste aller children einer Kategorie (für SQL "IN"-clause) */
$cat_children = substr($cat_children, 0, -2);
echo "<br/>category_parents: ".$cat_children;
Hm... das sollte das wichtigste gewesen sein. Sobald ich wieder etwas Zeit habe versuche ich das alles mal in mein Template einzubauen. Dann sehe ich ja was mir noch fehlt :D
...ach ja:
4.) Mit der Standardnavigation klappt das so alles nicht mehr. Die bezieht sich nämlich immer auf den standard-loop den ich ja gar nicht mehr verwende. Ist aber kein großes Problem da ich sowieso eine schönere Navigation (Seitenzahlen) haben wollte. Ich habe dafür also eine eigene Funktion geschrieben - bzw. eine vorhandene angepasst!
Sucht einfach nach einem "Pagenavi"-Plugin das Euch gefällt und erweitert es im Aufruf um einen Parameter um EUER SQL-Statement zu übergeben (anstatt dass die Funktion mit $request arbeitet soll sie mit eurem sql arbeiten).
OK - ich hoffe das hilft noch anderen...