На доске объявлений нет нужды показывыать просроченные объявления. Так же нет смысла отображать объявления, актуальные только до определенной даты. Например, скидка действует только до 1 августа 2011 года – явно не имеющее уже смысла предложение. Скрыть с главной страницы (или с любой другой) посты, у которых просрочен срок годности, можно, применив произвольные поля.
Для этого нужно немного модифицировать цикл вывода постов. Найдите в файле index.php начало цикла:
После этих строчек нужно внедрить произвольное поле, в котором указывается дата и время, до которого может жить пост:
$expiretime = get_post_custom_values('expire'); if (is_array($expiretime)) { $expirestring = implode($expiretime); } $secondsbetween = strtotime($expirestring)-time(); if ( $secondsbetween > 0 ) { // пример кода вывода содержимого поста - начало the_title(); the_content(); // пример кода вывода содержимого поста - конец }
Не забудьте, что цикл должен заканчиваться:
endwhile; endif; ?>
Эта прививка проверяет вплоть до секунд, больше нуля разница между установленным в произвольном поле expire времением и текущим. Если больше – значить время жизни поста еще не истекло. Если меньше – все, нужно убирать пост с главной страницы. так как отсчет идет в секундах, то и устанавливать время скрытия поста в произвольном поле нужно точно до секунд – mm/dd/yyyy 00:00:00.
mm – это порядковый номер месяца, например 08.
dd – порядковый номер дня, например 26.
yyyy – это точный год, например, 2011.
00:00:00 – час, минута, секунда, например, 14:15:36.
Надеюсь, что тем, кому нужно будет такое скрытие неактуальных постов, внедрить вышеизложенный код будет не очень сложно.
А как сделать если нужно чтобы записи включались за неделю до этой даты (ну чтобы срок их показа был неделю) ?
В полях уже стоят даты премьеры фильма (2011-11-27) ну и нужно вывести их начиная с 2011-11-20 по 27 число включительно.
Или чтобы показывались с 27го числа одну неделю?
Эта математика с expiretime и strtotime мне весь мозг поломала..