Intereting Posts
Есть ли крючки для комментариев? Добавить поле в редактор таксономии? Использование пользовательского режима темы WordPress для выбора шаблонов страниц, которые обновляют макет в предварительном просмотре Отображение div из пользовательского типа в Fancy Box Обнаружение, если родительская страница имеет галерею Не рекомендуется ли придерживаться плагинов, которые больше не поддерживаются автором для производственных сайтов? Создать массив из пользовательского типа сообщения, чтобы отобразить слайдер Шаблон страницы с разным содержимым страницы и сообщения Типы запросов нескольких запросов, каждый из которых имеет собственный мета-запрос Изменить пункты меню URL cubepoints / buddypress показывают новый ранг по активности? В чем смысл синтаксиса gettext? Уничтожать сеансы пользователей на основе идентификатора пользователя Как выбрать значение по умолчанию в списке опций? Показывать пользовательские поля для комментариев при редактировании в admin

Уникальный 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 }