Wordpress - сортировка сообщений по дате истечения срока - PullRequest
0 голосов
/ 09 августа 2010

Я пытаюсь показать сообщения с истекшим сроком ПОСЛЕ сообщений с истекшим сроком. Как я могу это сделать?

Я добавил настраиваемое поле «Дата истечения», в котором я храню даты истечения срока в формате гггг / мм / дд. Проблема в том, что если я упорядочу свои результаты по этому полю, даты истечения срока годности наступят раньше.

Итак, я создал повторяющееся задание cron, которое сравнивает даты и создает дополнительное настраиваемое поле «Дата истечения срока действия» для постов, даты которых прошли. Я попытался упорядочить по этому полю, но WP показывает только сообщения со значением для этого поля - сообщения IE без даты истечения срока действия или даты истечения срока в будущем не отображаются. Поэтому я попытался автоматически добавить значения «99999999» для любого сообщения, срок действия которого еще не истек. Проблема в том, что WP не может упорядочить по значениям настраиваемых полей ТОГДА дата - т.е. первые сообщения со значением '99999999' находятся в случайном порядке.

Я также попытался выполнить два запроса для сообщений: один без сообщений с истекшим сроком действия, другой с последующим объединением этих двух массивов. Таким образом, данные в правильном порядке - но они испортили нумерацию страниц WP.

Помогите, у меня заканчиваются идеи!

Ответы [ 2 ]

0 голосов
/ 10 августа 2010

Это может сработать, но я пытаюсь отсортировать сообщения на страницах моей категории. Функция Wp_get_recent_posts обычно используется для создания пользовательских циклов, а не для изменения «цикла» на страницах категорий (шаблонов архивов).

В конце концов я разобрался с этим. Я добавил этот код в начало моего архивного шаблона:

global $query_string;
query_posts($query_string . "&orderby=meta_value&meta_key=Expiration Date Passed&order=DESC");  

Я создал настраиваемое поле "sort", которое называется "Срок действия истек". Затем задание cron проверяет, не истек ли срок публикации. Если это не так, или если дата в будущем, он помещает дату публикации сообщения + 20 лет в столбце сортировки. Если срок действия сообщения истек, он помещает дату публикации сообщения в столбец сортировки. Таким образом, это приводит к тому, что я был после:

1) Сообщения, срок действия которых не истек, в порядке дат 2) Сообщения, срок действия которых истек, в порядке даты

Думаю, я опубликую это решение на тот случай, если кто-то еще захочет узнать.

0 голосов
/ 10 августа 2010

Поскольку у вас есть настраиваемое поле «Дата истечения срока действия», вы можете сначала создать два набора сообщений, используя это пользовательское поле в аргументах get_posts, чтобы различать текущие и просроченные сообщения

$ meta_key и $ meta_value (строка) (необязательно) Отображать только сообщения, содержащие мета (пользовательское) поле с этим ключом и значением. Оба параметра должны быть определены, иначе ни один не будет работать. По умолчанию: Нет

выписка из: http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

тогда вы сможете сортировать каждый набор так, как хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...