Рассмотрим функционал назначения для записи срока действия, т.е. даты после которой запись меняет статус.
WP Post Expires (2 000)
Простой плагин позволяющий назначать записям время, после которого будет выполнено одно из 3х действий: «Добавить префикс к заголовку». «Переместить в черновики», «Переместить в корзину».
Post Expirator (100 000)
Включает в записях блок настроек:
- Активировать
- Выставить дату и время
- Что сделать с записью при наступлении даты (изменить статус, unstick, назначить категорию)
В общих настройках можно настроить:
- Формат даты и времени
- Автоматически включать срок в новых записях
- Автоматическое уведомление по электронной почте
- Назначить категорию для перемещения записей
Добавляем вывод отчета до окончания публикации
Добавим к плагину Post Expirator счетчик во фронтенде.
В настройках Post Expirator в поле Date Format прописываем так: Y/m/d. Поле Time Format делаем пустым.
Подключаем к сайту скрипт jQuery.countdown.
var fiveSeconds = new Date().getTime() + 5000;
$('#clock').countdown(fiveSeconds, {elapse: true})
.on('update.countdown', function(event) {
var $this = $(this);
if (event.elapsed) {
$this.html(event.strftime('After end: <span>%H:%M:%S</span>'));
} else {
$this.html(event.strftime('To end: <span>%H:%M:%S</span>'));
}
});
Вывод счетчика во фронтенде:
<?php $exdate = do_shortcode( '[postexpirator]' );
if (!empty($exdate)) { echo '<div class="getting-started">'.$exdate.'</div>'; } ?>
Скрипт множественного (записей с счетчиками может быть несколько) вывода счетчиков:
jQuery(document).ready(function($){
$('.getting-started').each(function() {
var date = $(this).text();
$(this).countdown(date, function(event) {
var numdaes = declOfNum('%D', ['день', 'дня', 'дней'])
$(this).text( event.strftime('%D ' + numdaes + ' %H:%M:%S') );
});
});
});
Также в скриптах прописываем функцию регулярного выражения (день/дня/дней):
// Регулярное выражение
function declOfNum(n, text_forms) {
n = Math.abs(n) % 100; var n1 = n % 10;
if (n > 10 && n < 20) { return text_forms[2]; }
if (n1 > 1 && n1 < 5) { return text_forms[1]; }
if (n1 == 1) { return text_forms[0]; }
return text_forms[2];
}
т.к. скрипт выводится и инициируется во фронтенде, то вывод скрипта jQuery.countdown и библиотеки jquery должны быть раньше.
Акция окончена
Если срок записи подошел к концу, то произойдет действие выбранное в настройках записи. При этом счетчик не будет выводится. Если записи не нужно менять в статусе, то можно вывести текст «Акция окончена»:
<?php $exdate = do_shortcode( '[postexpirator]' );
if (!empty($exdate)) { echo '<div class="getting-started">'.$exdate.'</div>'; }
else { echo '<div class="getting-started">Окончена</div>'; } ?>
[site-socialshare]