n-wp.ru — блог о WordPress

Скрытие/отображение части поста по прошествии определенного времени

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

Понадобилось мне создать к посту дополнение, которое скрывалось по прошествии определенного времени с момента публикации. К плагинам я прибегать не стал, а воспользовался для этого функцией подсчета прошедшего с момента публикации времени и произвольными полями.

Всю задачу можно разделить на две:

  1. подсчет прошедшего времени с момента публикации
  2. вывод содержимого произвольного поля в зависимости от первой величины

Подсчет прошедшего с момента публикации времени

Для подсчета времени, прошедшего с момента публикации поста, нужно вставить в файл functions.php:

Первая функция showDate позволяет получать время публикации в относительном формате, а вторая функция showexpireflag вычисляет, сколько прошло времени с момента публикации.

Вывод контента по прошествии определенного времени

Для вычисления прошедшего времени в файл single.php нужно вставить:

После этого в файле single.php можно указать область, в которой нужно выводить временные данные. Например:

Понятно, что постоянно исправлять исходный код файлов используемой темы не очень удобно, поэтому для автоматического добавления контента можно воспользоваться произвольными полями. Например, для ввода любого содержимого можно создать произвольное поле ads_after. Вы можете вставить в это поле любой HTML-текст. Чтобы вывести значение поля ads_after только по прошествии определенного времени, используйте в файле single.php следующий код:

Если вам нужно выводить значение поля ads_after только первые 30 дней, а потом скрыть, то нужно всего лишь поменять в условии знак > на <:

Можно вообще сделать комбинированный способ: если еще не прошло 30 дней с момента публикации, то показывать значение произвольного поля ads_before, а если прошло, то показывать значение другого произвольного поля ads_before:

Для чего такое нужно? Вариантов масса — публикация объявлений, вывод рекламы только в новых/старых постах, скрытие временной рекламы по прошествии определенного времени.

Комментировать