Intereting Posts
Плагин электронной коммерции с функцией «купить для друга» Тип сообщения Постоянная ссылка Разрешено ли использовать стиль отступа Allman (BSD) при кодировании плагинов и тем WordPress? как остановить дрожание эффект на моей домашней странице Исключить дубликаты сообщений в этом запросе SELECT Как добавить php в пользовательскую ссылку в навигационном меню? Защищенный плагин WordPress Как использовать в администраторе более 256 МБ памяти? Когда get_template_part () предпочтительнее простого использования файлов template.php? Показать div только в том случае, если сообщение находится в определенной категории Проблемы с фильтром wp_insert_post и save_posts Как я могу использовать файл в своем плагине в качестве замены для single.php для запроса пользовательского типа? WordPress Social Login> Опубликовать в Facebook стена Facebook Не удается сохранить php-строку в настраиваемом поле Неверный IP-адрес в разделе комментариев

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

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

Я использую плагин « Календарь событий » на своем сайте для координации команды сотрудников. Я хочу иметь возможность отправлять автоматическую электронную почту, содержащую тело сообщения о событиях (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. Это моя первая попытка в чем-то подобном.

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

Вы почти там. Вам просто нужно использовать 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 ); 

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