Как сделать уведомления по емейл пользователей о новых записях в новом типе поста?

Ссылка скопирована
1 ответ

Всем привет!
Подскажите, пожалуйста, есть следующая задача:
Сделать по емейл раз в день (или при публикации новой записи) рассылку пользователям подписанным на категорию о новых записях.
У меня создан новый тип поста, в нем публикуются записи. Как мне уведомить пользователей о новых записях?
Может есть плагины для этого, которые работают не только с блогами, но и новыми типами постов?
Спасибо

Дополнительно:

Ответы:

если вы знаете плагин который работает с постами, его не сложно завести на работу с кастом пост тайпом

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

Уведомлять пользователей о новых записях в custom post type можно, но сначала нужно определить модель подписки: пользователь подписан на рубрику/термин, на автора, на весь CPT или на конкретную тему. От этого зависит структура хранения подписок.

Если нужно “раз в день прислать новые записи по категориям”, лучше делать дайджест через cron, а не отправлять письмо при каждой публикации. Так меньше риск попасть в спам и не будет сотен писем при массовой публикации.

Схема:

  • создать таблицу или user meta с подписками пользователя на term_id;
  • раз в день WP-Cron выбирает опубликованные за сутки записи CPT;
  • группирует их по категориям/терминам;
  • находит подписчиков;
  • отправляет одно письмо со списком материалов.

Пример выборки новых записей CPT:

$posts = get_posts([
    'post_type' => 'my_cpt',
    'post_status' => 'publish',
    'date_query' => [
        [
            'after' => '1 day ago',
        ],
    ],
    'posts_per_page' => 50,
]);

$posts = get_posts([ 'post_type' => 'my_cpt', 'post_status' => 'publish', 'date_query' => [ [ 'after' => '1 day ago', ], ], 'posts_per_page' => 50, ]);

Отправка письма:

wp_mail(
    $user_email,
    'Новые материалы за день',
    $message,
    ['Content-Type: text/html; charset=UTF-8']
);

wp_mail( $user_email, 'Новые материалы за день', $message, ['Content-Type: text/html; charset=UTF-8'] );

Если хотите отправлять сразу при публикации, используйте hook transition_post_status, чтобы не слать письмо при каждом обновлении:

add_action('transition_post_status', function ($new, $old, $post) {
    if ($post->post_type !== 'my_cpt') {
        return;
    }
 
    if ($new === 'publish' && $old !== 'publish') {
        // отправить уведомления
    }
}, 10, 3);

add_action('transition_post_status', function ($new, $old, $post) { if ($post->post_type !== 'my_cpt') { return; } if ($new === 'publish' && $old !== 'publish') { // отправить уведомления } }, 10, 3);

Для продакшена важно: отправлять через SMTP/почтовый сервис, добавить отписку, не слать письма без согласия, логировать отправки и не запускать массовую рассылку в обычном веб-запросе. Для больших объёмов лучше очередь: Action Scheduler, WP Background Processing или внешний сервис.

Если нужен готовый путь, посмотрите плагины подписок/уведомлений, но кастомная логика по CPT и категориям часто всё равно требует доработки.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно