Ich habe eine Seite mit zwei Abschnitten, von denen jeder einen anderen verwendet WP_Query()
zum Einziehen verwendet events
, bei dem es sich um einen benutzerdefinierten Beitragstyp handelt. Bei jeder WP_Query()
Abfrage wird a meta_key
nach dem Ereignisdatum abgefragt, sodass in Abschnitt 1 nur bevorstehende events
und in Abschnitt 2 vergangene Ereignisse angezeigt werden events
.
In events
Abschnitt 1 werden alle relevanten Informationen auf meiner Seite angezeigt, sodass ein Klicken nicht möglich ist.
Die Vergangenheit events
in Abschnitt 2 zeigt nur den event
Titel an und kann angeklickt werden. Wenn Benutzer auf eine Vergangenheit klicken event
, verlinken sie auf eine benutzerdefinierte single-event.php
Vorlage für die Vergangenheit event
.
Ich möchte die vorherige / nächste Navigation in der single-event.php
Vorlage anzeigen , aber die Navigation sollte nur auf die Vergangenheit zeigen events
.
Ich habe es versucht next_post_link()
und previous_post_link()
aber diese werden auf kommende verlinkenevents
, was ich nicht will. Ich kann wahrscheinlich ein neues WP_Query()
auf meinem single-event.php
einrichten und es durchlaufen, um die Prev / Next-IDs zu erhalten, aber das Wiederholen der Abfrage scheint ein drastischer Schritt zu sein.
Ich würde mich sehr über einen Einblick in einen Weg freuen, wie events
ich aus meinen Links zu vorherigen / nächsten Beiträgen herausfiltern kann . Ich habe diese Frage gesehen , würde aber lieber kein Plugin verwenden.
get_adjacent_post
Funktion filtern .WP_Query
und dann zu überprüfen$your_query_object->request
, um einen guten Teil der SQL zu erhalten, die Sie zum Abrufen benötigen.Antworten:
Dank des Hinweises von @ Milo gelang es mir, dies nur mit WordPress-Filtern zum Laufen zu bringen.
Beachten Sie nur, dass diese für meinen Fall ziemlich spezifisch sind, aber Sie sollten kein Problem damit haben, sie für Ihren eigenen Gebrauch zu ändern. Ich verwende erweiterte benutzerdefinierte Felder mit einem Datumsauswahlfeld namens
date
und Prev / Next-Links verweisen nur auf Ereignisse mitdate
Feldern, die auf einen Tag vor dem heutigen Tag festgelegt wurden.Ich habe 5 Filter erstellt:
JOIN
(hinzuzufügenwp_postmeta
)WHERE
für den vorherigen LinkWHERE
für den nächsten LinkSORT
für den vorherigen LinkSORT
für den nächsten LinkFolgendes habe ich mir ausgedacht: Es scheint zu funktionieren, aber wenn jemand Probleme entdeckt, würde ich mich über Feedback freuen:
quelle
Ich hatte ein ziemlich ähnliches Problem, musste mehrere Beiträge sortieren und von der vorherigen / nächsten Navigation ausschließen. Das Problem mit der Lösung von @ cfx war: Es ist nicht für Ajax geeignet: Die
is_singular()
Funktion gibt false zurück, wenn Sie Inhalte über wp-ajax laden. So funktionierte es beim Laden der Seite, aber nicht, als der Inhalt von Ajax geändert wurde.global $post;
half mir hier raus.Hier ist meine Lösung:
In diesem Fall lautet die Kostümfeldabfrage: Alle Beiträge ausschließen, auf die cf
not_clickable
gesetzt isttrue
.Ein weiteres Problem, auf das ich gestoßen bin: Ich habe einige Inhalte erstellt und anschließend dieses benutzerdefinierte Feld implementiert. Daher hat die Abfrage auch die Beiträge ausgeschlossen, an die dieses Feld nicht einmal angehängt war, egal ob wahr oder falsch. Denken Sie daran, wenn Sie diese Art der Filterung verwenden. Stellen Sie sicher, dass jeder Beitrag einen Wert hat, oder berücksichtigen Sie diesen in Ihrer SQL-Syntax.
quelle