Когда просят как-то организовать на сайте отработку пользовательской функции по определенному заданному времени, приходится искать наиболее оптимальные подходы: ведь требования у нас у всех разные! это я к тому, что если понимать принцип решения задачи, то выполнить на ней нужные для сайта фичи, н составит труда. Только фантазируй!..
Чаще всего админы хотят (без каких бы то ни было плагинов) организовать вывод рекламы в контенте сайта. А потому нынче пример, основанный на фильтре по the_content
Статья: задаем определенную функцию, и чтобы та отрабатывала по заданному нами времени: четко заданное, таймер и пр. и пр. Рассмотрим несколько примеров реализации.
Справочник для любознательных начинающих веб-мастеров:
К примеру, через определенный промежуток времени возможно не только вывести рекламный блок на страницах сайта, но и любую информацию в определенное время: работа с шорткодами, функциями php
отработка кода по времени, примеры
Коли мы говорили о контентной части (постах) сайта, то давайте простоты для и посмотрим пример на фильтре add_filter() – the_content – подробнее разбираемся в разделе по описанию функций.
фильтр организуем отработаем пользовательской функцией ats_content_adtime:
add_filter( 'the_content', 'ats_content_adtime', -10 );
обработка функции:
$days = 4; // через сколько после даты публикации показывать блок рекламы
$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date); // обработка фильтрации
if ( $offset < (3600*24*$days) ) return $text; //возвращение данных
Добавляем на страницы сайта видео из соцсетей, по кнопке отрабатывает шорткод – для TinyMCE или html редакторов
пример кода, функция которого отработает по заданному времени
Ниже дан пример обработки дополнительных данных и отфильтрованный их вывод в контенте поста:
$adsense = '<!-- noindex --><br />' . do_shortcode( '[любой_шорткод, функция, элемент]' ) . '<!--/ noindex -->'; // переменная данных
return preg_replace( '#<span.*?id="more-(.*?)".*?></span>#', '<span id="more-\1"></span></p>'. $adsense .'<br /><p style="text-align: justify;">', trim( $text ), 1 ); // оббработка и замена данных
пример ни CUT-море. Возможно и какую-то иную метку, или по количеству символов.
/*пример на CUT-море: назначим время вывода блока*/
add_filter( 'the_content', 'ats_content_adtime', -10 );
function ats_content_adtime( $text ) {
$days = 4; // через сколько дней спустя даты публикации показывать рекламу
$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
if ( $offset < (3600*24*$days) ) return $text;
$adsense = '<!-- noindex --><br />' . шордкод . '<!--/ noindex -->';
return preg_replace( '#<span.*?id="more-(.*?)".*?></span>#', '<span id="more-\1"></span></p>'. $adsense .'<br /><p style="text-align: justify;">', trim( $text ), 1 );
// строка выше может содержать любые условия, регулярные выражения. К примеру, возможно указать время и место вывода в том или ином абзаце, после того или иного якоря, короче, где хотите...
}
/*пример на CUT-море: время вывода блока*/
Если нужно выводить блок после определенного абзаца, этот код потребуется немного доработать: задать функцию обработки расчёта “места и времени”.
Как добавить на сайт код (тестер) проверки запросов к БД и скорости загрузки сайта… 2 способа
Напоминаю: данное решение отработает только, скажем так, внутри the_content();
Если назначать функцию на отработку (вывод) конкретного элемента сайта, тогда подход будет несколько иным. Кому интересно, пишите в комментариях. Добавлю примеры…
Что правильнее использовать – add_action или функцию – function
таймер можно организовать как-то так
Если требуется создать независимую (локальную) отработку в любом месте сайта, то можно подойти к решению примерно таим образом:
Вкратце организация (принцип) таймера может выглядеть как-то так:
function clock_ats_time_start_cods() { // Время старта до отработки...
$daystim = 1; // число суток через которое отработает код
$datetimeYES = new DateTime( ); // время сервера, от которого пляшем
//$datetime1 = new DateTime( '2024-10-26' ); // можно вывести время сервера
$datetime2 = new DateTime( '2024-10-26' ); // Время старта до отработки
if ( date_diff( $datetime2, new DateTime( ))->days > $daystim ) { // если условие выполнено
echo '<div style="background-color:#ffffff;color:#7a7a7a;text-align:center;">' . 'вывод инфs' . '</div>';
} else { echo 'до отработки'; }
}
Расчет данных от функции new DateTime( ); – серверное время сайта (оно может быть в зависимости от часового пояса различно!..)
date_diff(); – здесь назовем ее так: функция расчета между двумя указанными датами. Помещается либо в условия if () либо прямо…
Некоторым требуется автоматика вывода определенных информационных блоков по праздничным датам. Т.е. автоматически выводить и скрывать данные: текст/картинку/видео и пр. подобное.
И это все просто реализуется! без излишних сомнительных плагинов. К тому же, утонченно настраивается… Иным нужно получить данные страницы и вывести информацию на экран в произвольном месте, опять же в нужное время…
Напоминаю, если что-то непонятно, опишите “казус” в комментариях. Разберемся…
В общем, ребята, которых консультирую, все это могут спросить у меня напрямую, но если вы пока еще не в наших рядах, задавайте вопросы в комментариях, либо в телеге – потележим))
mihalica.ru !