Как ограничить время показа постов с помощью произвольных полей

На доске объявлений нет нужды показывыать просроченные объявления. Так же нет смысла отображать объявления, актуальные только до определенной даты. Например, скидка действует только до 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.

Надеюсь, что тем, кому нужно будет такое скрытие неактуальных постов, внедрить вышеизложенный код будет не очень сложно.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

1 Kомментарий

  1. А как сделать если нужно чтобы записи включались за неделю до этой даты (ну чтобы срок их показа был неделю) ?
    В полях уже стоят даты премьеры фильма (2011-11-27) ну и нужно вывести их начиная с 2011-11-20 по 27 число включительно.

    Или чтобы показывались с 27го числа одну неделю?

    Эта математика с expiretime и strtotime мне весь мозг поломала..

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*