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

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

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

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Otshelnik-fm

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

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

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

    Ответить