Intereting Posts
Как получить всех пользователей по пользовательскому метаму (массиву) текущего пользователя? Можно ли удалить главный редактор текстовых полей? Как автоматически добавлять и показывать (открывать) все атрибуты продукта? Как и почему вызов крючка сам по себе не вызывает рекурсии? Редактор TinyMCE разбивает мой красивый HTML Есть ли инструкция if, которая может определить, является ли сообщение в цикле последним? API Jetpack для WordPress Network Навигация по страницам за пределами контура Как установить домашнюю страницу плагина Попытка внедрить AJAX в мои страницы администратора. Я неправильно помещаю в очередь и локализую свои сценарии? Увеличение изображения kb при изменении размера Что это в моих таблицах Как получить get_category_parents () путь патронов без ссылки на последний элемент Проблема с несколькими циклами в теме wordpress стили CSS WordPress – нижняя граница не отображается

Уникальный wp_schedule_single_event () для каждого сообщения?

Я создаю сайт для клиента, который требует рассылки писем о каждом сообщении в разные даты (т.е. за две недели до публикации публикации, затем снова через четыре недели после публикации публикации и т. Д.). Кажется, что лучший способ сделать это с помощью wp_schedule_single_event () с уникальным именем события, но я не совсем уверен, как правильно вызвать add_action в этих одиночных событиях, когда каждое событие имеет уникальное имя .

Я планирую такие события:

add_action('wp_insert_post', 'cron_emails'); function cron_emails() { global $post; $meta = get_post_custom($post->ID); // one day before event wp_clear_scheduled_hook("one_day_before_event_" . $post->ID); if(!empty($meta["_start-date"][0])) { $newdate = strtotime ( '-1 day' , strtotime ( $meta["_start-date"][0] ) ); wp_schedule_single_event($newdate, "one_day_before_event_" . $post->ID); } } 

Это назначает одно событие с уникальным именем one_day_before_event_ [POST_ID] . Прекрасно работает, никаких жалоб. Но теперь, когда cron катится, как мне инициировать это уникальное событие с помощью add_action? Я действительно не понимаю, как динамически делать add_action, когда каждое сообщение имеет уникальное имя события, например:

 add_action('one_day_before_event_[POST_ID]','some_function'); 

Два варианта, о которых я могу думать, – это (1) Прокрутить каждый отдельный идентификатор в блоге или (2) вызвать действие только на single.php:

 is(is_single()) add_action('one_day_before_event_' . $post->ID, 'some_function'); 

У кого-нибудь есть какие-то лучшие идеи о том, как я могу динамически вызвать add_action для уникального имени события?

Solutions Collecting From Web of "Уникальный wp_schedule_single_event () для каждого сообщения?"

Вы можете передать аргументы функции wp_schedule_single_event:

 wp_schedule_single_event($newdate, "one_day_before_event", array($post->ID)); 

Затем, если вы делаете add_action, вы можете сказать, сколько аргументов оно получит (в данном случае 1).

 add_action( 'one_day_before_event', 'some_function', 10, 1 ); 

Затем в вашей функции вы можете получить доступ к переменной:

 function some_function($post_id) { // Do something with $post_id }