У меня есть страница с двумя секциями, каждая использует другую , WP_Query()
чтобы тянуть events
, которые являются своим родом таможенного поста. Каждый WP_Query()
запрашивает meta_key
дату события, чтобы в разделе 1 отображались только предстоящие события, events
а в разделе 2 - прошедшие events
.
В следующем events
разделе 1 вся необходимая информация отображается на моей странице, поэтому щелкнуть их невозможно.
Прошлое events
в Разделе 2 отображает только event
заголовок и кликабельно. Когда пользователи нажимают на прошлое, event
они ссылаются на пользовательский single-event.php
шаблон для прошлого event
.
Я хочу отобразить предыдущую / следующую навигацию в single-event.php
шаблоне, но навигация должна указывать только на прошлое events
.
Я попытался с помощью next_post_link()
и , previous_post_link()
но они будут ссылаться на предстоящих events
тоже, что я не хочу. Я, вероятно, могу установить новый WP_Query()
на моем single-event.php
и перебрать его, чтобы получить идентификаторы Prev / Next, но повторение запроса кажется решительным шагом.
Я был бы очень признателен за понимание того, как отфильтровать предстоящие events
ссылки из моих предыдущих / следующих публикаций. Я видел этот вопрос, но я бы предпочел не использовать плагин.
get_adjacent_post
функции.WP_Query
, а затем проверка$your_query_object->request
, которая покажет хороший кусок SQL, который вам понадобится для его выполнения.Ответы:
Мне удалось заставить это работать, используя только фильтры WordPress, благодаря подсказке @ Milo.
Просто отметьте, что они довольно специфичны для моего случая, но у вас не должно возникнуть проблем с их изменением для собственного использования. Я использую расширенные настраиваемые поля с полем выбора даты,
date
а ссылки «Предыдущая / Следующая» указывают только на события сdate
полями, установленными в любой день до сегодняшнего дня.Я создал 5 фильтров:
JOIN
(добавитьwp_postmeta
)WHERE
для предыдущей ссылкиWHERE
для следующей ссылкиSORT
для предыдущей ссылкиSORT
для следующей ссылкиВот то, что я придумал, похоже, что оно работает, но если кто-то обнаружит какие-либо проблемы, я буду рад обратной связи:
источник
У меня была довольно похожая проблема, мне нужно было отсортировать и исключить несколько постов из предыдущей / следующей навигации. проблема с решением @ cfx заключалась в следующем: он не способен на ajax:
is_singular()
функция возвращает false, если вы загружаете содержимое через wp-ajax. так что он работал при загрузке страницы, но не работал, когда содержимое было изменено с помощью ajax.global $post;
помогал мне здесь.вот мое решение:
В этом случае запрос Costum поле: исключить все сообщения, которые имеют Cf
not_clickable
набор дляtrue
.Еще одна проблема, с которой я столкнулся: у меня было некоторое содержимое, созданное, а затем внедрившее это настраиваемое поле ... поэтому в запрос также были исключены посты, у которых даже это поле не было прикреплено к сообщению, независимо от того, является ли оно истинным или ложным. просто имейте это в виду, когда используете этот тип фильтрации. убедитесь, что у каждого сообщения есть значение, или учитывайте это в вашем синтаксисе sql.
источник