Сегодня на сайте наткнулся на сообщение от пользователя, который спрашивал как можно организовать автоматическую рассылку писем пользователям при сохранении записи, и решил написать небольшую функцию которая поможет вам в этом вопросе. Ниже код который необходимо вставить в файл functions.php находящийся в папке с вашей темой.
add_action( 'save_post', 'send_mail_all_users'); function send_mail_all_users($post_id) { $args = array( 'role' => '', //Если необходимо отправлять писима пользователям с определёнными ролями например подписчикам 'subscriber'. 'exclude' => '', //Указываем ID вользователей котором не будем отправлять сообщения. Например array(1,10,23). 'orderby' => 'login', //Сортировать по: ('ID', 'login', 'nicename', 'email', 'url', 'registered', 'display_name', или 'post_count'). 'order' => 'ASC', //По возрастанию/убыванию. Значения ASC или DESC . ); $users = get_users($args); if ( ! wp_is_post_revision( $post_id ) ) return; $post_title = get_the_title( $post_id ); $post_url = get_permalink( $post_id ); $subject = 'Запись обновлена'; $message = "Мы обновили запись:" . PHP_EOL; $message .= "" . $post_title . "" . PHP_EOL; foreach( $users as $user ) { @wp_mail( $user->user_email, $subject, $message ); //Подставлям на всякий случай костыль к функции wp_mail() } }
Это самый простой вариант, на мой взгляд. То как будет выглядеть само письмо уже зависит от вашей фантазии и знания програмирования =) Юзайте и улыбайтесь, ребятки 😉
неплохое решение, я бы сказал, базовое) Но если пользователей на сайте будет слишком много, то боюсь, что это вызовет повышенную нагрузку на сервер и выполнение скрипта может быть приостановлено, придется дополнять код. Но на первое время вполне сгодится, благодарю.
Андрей, именно поэтому я и написал, что это самый простой вариант =)
если не трудно напишите после каких строк добавлять а то я не силен в прораммировании
спасибо огромное сейчас разберусь
не выходит
В файле functions.php который находится в папке с вашей темой. Где нибудь в самом конце, до закрытия PHP (т.е. до знака " ?> ")
Двойные кавычки в 21 строке? Что имелось ввиду? поясните. С ними ошибка 500.
Спасибо за функцию
У меня больше 1000 подписчиков, а хостинг ограничивает отправку в размере 100 писем в час 🙁
Ну для этого существуют плагины для рассылки или такие сервисы как майлчимп. Но если вы всё же хотите отправлять сообщения при каждом обновлении записи, то можно просто сделать это через CRON. Задать интервал типа лимит = час