Intereting Posts
Post injection – как исключить исходный пост Как включить файл из плагинов в шаблон? Как отсортировать область администрирования пользовательского типа WordPress с помощью настраиваемого поля Доступ к параметрам темы в шаблонах адаптивные признанные изображения wordpress 4.4 grid Как игнорировать или отключать тег следующей страницы? выполнить функцию в плагине wordpress с помощью crontab Предоставление пользователям возможности просматривать частные сообщения (в ожидании утверждения) Нажатие обновлений на премиум-тему Последние сообщения на статической домашней странице Как создать большую страницу Как использовать цвет из параметров темы? Сохранение предварительно дезинфицированного имени файла вложения в качестве заголовка или надписи Сообщения WP_Query по расстоянию на основе LAT & LNG в базе данных hybridauth (интеграция с Google OAuth) и WP

Сделать несколько заданий на дату изменения без работы WordPress cron

Я пытаюсь рандомизировать несколько сообщений на моем сайте клиента, которые находятся на разных страницах каждый день. Поэтому я написал функцию, которая возвращает true при изменении даты, и если это так, я рандомизирую идентификаторы сообщений и сохраняю их в базе данных и использую одни и те же значения в течение дня. Итак, вот что я делаю,

function comi_date_change(){ date_default_timezone_set('Asia/Kolkata'); $current_date = date('j F Y'); $comi_current_date = get_option('comi_current_date'); if($current_date == $comi_current_date){ return FALSE; }else{ update_option('comi_current_date', $current_date ); return TRUE; } } 

Когда я проверяю условие mocomi_date_chage () как true или false, оно работает, но только один раз, поскольку в момент выполнения этой функции он сохраняет текущую дату в базе данных и возвращает false для остальных? Я не хочу использовать функцию работы cron WordPress wp_schedule_event() , есть ли альтернатива?

благодаря

Solutions Collecting From Web of "Сделать несколько заданий на дату изменения без работы WordPress cron"

Другой способ повторить задачу регулярно – но не на каждом обновлении страницы – без использования cron – использовать переходный процесс, который длится целый день. Это даже поможет вашему веб-сайту быстрее показать свою домашнюю страницу!

Переходным является способ WordPress для кэширования бит html. Это особенно полезно для сложных запросов к базе данных. С переходным процессом вы выполняете сложные запросы, а затем храните вывод html в базе данных за определенное количество времени. Таким образом, вы можете запустить свою функцию, сохранить ее выход и кэшировать ее на X секунд (день = 24 * 60 * 60 секунд = 86400).

Ниже приведен пример (уменьшенный) того, что вы должны использовать в своем шаблоне front-page.php.

 // Get any existing copy of our transient data if ( false === ( $special_query_results = get_transient( 'frontpage_random_posts' ) ) ) { // It wasn't there, so regenerate the data and save the transient $special_query_results = new WP_Query( 'cat=5&order=random&limit=1&orderby=date' ); set_transient( 'frontpage_random_posts', $special_query_results, 86400 ); } // Use the data like you would have normally... 

Дополнительная информация: http://wp.tutsplus.com/tutorials/getting-started-with-the-wordpress-transients-api-part-1/

Поскольку я должен проверить 8 условий, это то, что я сейчас делаю.

 add_action('init', 'comi_date_change'); function comi_date_change(){ date_default_timezone_set('Asia/Kolkata'); $current_date = date('j F Y'); $comi_current_date = get_option('comi_current_date'); if($current_date !== $comi_current_date){ update_option('comi_current_date', $current_date ); update_option('dc_home_mustview', '2'); update_option('dc_fun_mustview', '2'); update_option('dc_learn_mustview', '2'); update_option('dc_fun_subcat_one', '2'); update_option('dc_fun_subcat_two', '2'); update_option('dc_learn_subcat_one', '2'); update_option('dc_home_learn_subcat_two', '2'); update_option('dc_editors_picks', '2'); update_option('dc_home_factory', '2'); } } 

При каждом изменении даты он устанавливает значение 2 для каждого ключа, а затем я могу индивидуально проверять каждый из них для каждого условия.

 $date_change = get_option('dc_home_mustview'); if($date_change == 2){ //do stuff update_option('dc_home_mustview', 1); } 

и то же самое для условий отдыха на разных страницах.