Как создать автоматическое сообщение о новом отеле в WordPress на базе пользовательского типа записи

Диагностика задачи: зачем и когда нужно автоматическое сообщение о новом отеле

Если вы ведёте сайт с каталогом отелей на WordPress и добавляете новые записи часто, полезно автоматически оповещать пользователей или администраторов о появлении нового объекта. Это может быть email-рассылка, сообщение в админ-панели, уведомление через REST API или публикация в соцсетях. Такой подход экономит время и снижает вероятность пропуска важных обновлений.

Создание кастомного типа записи «Отели» и добавление автоматического сообщения

Регистрируем тип записи отеля

Регистрация кастомного типа записей — основа. В functions.php вашей темы или в плагине добавьте:

function register_hotel_post_type() {
    $labels = array(
        'name'               => 'Отели',
        'singular_name'      => 'Отель',
        'menu_name'          => 'Отели',
        'add_new_item'       => 'Добавить новый отель',
        'edit_item'          => 'Редактировать отель',
        'new_item'           => 'Новый отель',
        'view_item'          => 'Просмотреть отель',
        'search_items'       => 'Поиск отелей',
        'not_found'          => 'Отели не найдены',
        'not_found_in_trash' => 'Отели не найдены в корзине',
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'show_in_rest'       => true,
        'supports'           => array('title', 'editor', 'thumbnail', 'custom-fields'),
        'menu_position'      => 20,
        'menu_icon'          => 'dashicons-building',
    );

    register_post_type('hotel', $args);
}
add_action('init', 'register_hotel_post_type');

Добавляем автоматическую отправку email при публикации нового отеля

Используем хук transition_post_status, чтобы отследить смену статуса записи на «publish» именно для типа «hotel» и отправить уведомление.

function notify_new_hotel_post($new_status, $old_status, $post) {
    if ('hotel' !== $post->post_type) {
        return;
    }
    if ('publish' === $new_status && 'publish' !== $old_status) {
        $to = 'admin@example.com'; // Замените на нужный email
        $subject = 'Новый отель добавлен: ' . $post->post_title;
        $message = 'Появился новый отель на сайте: ' . get_permalink($post->ID);
        wp_mail($to, $subject, $message);
    }
}
add_action('transition_post_status', 'notify_new_hotel_post', 10, 3);

Пошаговое руководство по внедрению

  1. Добавьте код регистрации типа записи в functions.php и сохраните файл.
  2. Создайте новый отель в админке WordPress, заполните заголовок и описание.
  3. Опубликуйте запись и убедитесь, что email приходит на указанный адрес.
  4. При необходимости замените адрес получателя или расширьте функционал (например, отправку в Slack или Telegram).

Как проверить, что автоматическое сообщение работает

  • Создайте тестовую запись типа «Отель» и опубликуйте её.
  • Проверьте папку «Входящие» у email-адреса, указанного в коде.
  • Если письма не пришли, проверьте логи сервера и настройки почты WordPress (можно использовать SMTP-плагины).

Частые ошибки и как их исправить

  • Письма не отправляются: Проверьте функцию wp_mail(), установите SMTP-плагин для надежной отправки.
  • Сообщение отправляется несколько раз: Убедитесь, что хук transition_post_status проверяет смену статуса, а не просто публикацию.
  • Письма отправляются на неправильный адрес: Проверьте переменную $to в коде и замените на актуальный email.
  • Новый тип записи не отображается в админке: Проверьте регистрацию типа записи, вызов хука add_action('init', ...) и права пользователя.

Практические советы по безопасности и производительности

  • Используйте фильтр для email-адреса, чтобы можно было менять получателя без правки кода:
function get_notification_email() {
    return apply_filters('hotel_notification_email', 'admin@example.com');
}
// В функции отправки письма замените $to = get_notification_email();
  • Для больших сайтов рекомендуем использовать очередь для отправки писем (например, с WP Cron), чтобы не блокировать публикацию.
  • Очищайте хук от лишних вызовов, чтобы избежать дублирования сообщений.
  • Проверяйте права пользователя перед отправкой, чтобы избежать утечек информации.

Сравнение вариантов реализации автоматических сообщений

МетодПлюсыМинусыПрименение
Хук transition_post_status + wp_mailПросто, нативно, быстроЗависит от настроек почты сервераМаленькие и средние сайты
Отправка через SMTP-плагинНадежная доставка, логированиеТребует настройки и установки плагинаСайты с проблемами отправки почты
Интеграция с внешними сервисами (Slack, Telegram)Удобно для команд, мгновенноНужна дополнительная настройка API и безопасностьКомандные проекты, агентства
Как использовать WPRemark для автоматического создания резервных копий WordPress
22.03.2026
Как настроить отложенный запуск CRON задач в WordPress
29.03.2026
Как автоматизировать обновления плагинов WordPress без рисков
29.11.2025
Создание и настройка автоматических отзывов в WordPress с помощью Expert Review
05.01.2026
Как отключить Emoji в WordPress для ускорения сайта и улучшения производительности
06.12.2025