Intereting Posts
Permalinks, используя дату события (год и месяц) вместо даты публикации Пользовательский тип типа сообщения с rand и meta_value Как указать Таможенную таксономию URL-адрес субдомена WordPress CDN недоступен для публики почему плагины загружаются до подключаемых модулей Целевые страницы с использованием шаблона страницы одного продукта Woo Commerce Заполнение пользовательского поля при публикации или обновлении Как использовать переменную start_el в start_lvl Текущая переменная пути URL Загрузите различные шаблоны single.php в соответствии с выбором макета публикации Как добавить теги в пользовательский тип сообщения? WordPress, используя get_term, чтобы восстановить слизню, которая не работает должным образом Статьи являются текстовыми только в любой категории, а не в HTML Изменение префикса таблицы для существующего сайта WordPresss Переопределить dynamic_sidebar () в плагине?

Отправлять изменения для отправки адресов электронной почты (а не пользователей или подписчиков)

Что у меня есть

Я использую плагин « Календарь событий » на своем сайте для координации команды сотрудников. Я хочу иметь возможность отправлять автоматическую электронную почту, содержащую тело сообщения о событиях (post-type is not $post , но вместо $tribe_events ) каждый раз, когда он обновляется, но только для сотрудников, заинтересованных в этом сообщении.

Чтобы получить адреса электронной почты, я установил мета-поле в $tribe_events post-type $tribe_events в качестве плагина, основанного на том, что я нашел онлайн для добавления кнопок социальных сетей, и он отлично работает:

 add_action( 'add_meta_boxes', 'add_custom_box' ); function add_custom_box( $tribe_events ) { add_meta_box( 'animateurs', // ID, should be a string. 'Animateurs', // Meta Box Title. 'social_services', // Your call back function, this is where your form field will go. 'tribe_events', // The post type you want this to show up on, can be post, page, or custom post type. 'side', // The placement of your meta box, can be normal or side. 'core' // The priority in which this will be displayed. ); } function social_services( $tribe_events ) { // Get post meta value using the key from our save function in the second paramater. $custom = get_post_meta($tribe_events->ID, '_social_services', true); ?> <input type="checkbox" id="anim_patrick" name="social_services[]" value="patrick@example.com" <?php echo (in_array('patrick@example.com', $custom)) ? 'checked="checked"' : ''; ?>> <label for="anim_patrick"></label>Patrick<br> <input type="checkbox" id="anim_jeff" name="social_services[]" value="jeff@example.com" <?php echo (in_array('jeff@example.com', $custom)) ? 'checked="checked"' : ''; ?>> <label for="anim_jeff"></label>Jeff<br> <?php } function save_extra_fields(){ global $post; if(isset( $_POST['social_services'] )) { $custom = $_POST['social_services']; $old_meta = get_post_meta($post->ID, '_social_services', true); // Update post meta if(!empty($old_meta)){ update_post_meta($post->ID, '_social_services', $custom); } else { add_post_meta($post->ID, '_social_services', $custom, true); } } // update_post_meta($post->ID, "producers", $_POST["producers"]); } add_action( 'save_post', 'save_extra_fields' ); 

Результат

Что добавленный выше код добавляет редактору

Это успешно сохраняет адреса электронной почты соответствующих сотрудников по почте.

Я могу использовать этот код, чтобы показать массив этих адресов электронной почты (на странице – не то, что я хочу сделать. Это просто показать, как получить адреса электронной почты из массива):

 <?php $meta = get_post_meta($post->ID, '_social_services', true); $anims = implode (", ", $meta); echo $anims; ?> 

Что мне нужно

Теперь я просто застрял в последней части, чтобы отправить электронное письмо, содержащее новый обновленный контент, на адреса электронной почты, содержащиеся в $anims каждый раз, когда $tribe_events post-type $tribe_events .

Как я могу это достичь?

PS: Я – нуб на PHP. Это моя первая попытка в чем-то подобном.

Вы почти там. Вам просто нужно использовать wp_mail для отправки писем, содержащихся в вашем массиве.

Вот как вы можете добиться этого, используя save_post action hook.

 /** * To send email on updating your event post * * @param int $post_id The post ID. * @param post $post The post object. * @param bool $update Whether this is an existing post being updated or not. */ function send_email_on_event_update( $post_id, $post, $update ) { $post_type = 'tribe_events'; // your post type // If this isn't a 'tribe_events' post, No need to send emails if ( $post_type != $post->post_type ) { return; } // - Now to Send emails // first get array of your emails $all_emails = get_post_meta($post_id , '_social_services', true); // this is suppose to be variable containing array of emails $post_title = get_the_title( $post_id ); $post_url = get_permalink( $post_id ); $subject = $post_title; $message = "This event has been updated:\n\n"; $message .= $post_title . ": " . $post_url; $message .= "keep adding what ever you want to send in this email..."; // Send email to $all_emails. wp_mail( $all_emails, $subject, $message ); } // have kept the priority to 11 to make sure we get the content for email after every thing is saved add_action( 'save_post', 'send_email_on_event_update', 11, 3 ); 

Пока не проверяйте этот код. Но я уверен, что это сработает для вас.