Что такое неактивные пользователи и зачем их отслеживать
В WordPress-сообществе, особенно на сайтах с регистрацией и подпиской, часто возникает задача поддерживать активность пользователей. Неактивные пользователи — это те, кто долгое время не заходил на сайт, не взаимодействовал с контентом или не обновлял свой профиль. Отслеживание таких пользователей полезно для очистки базы, повышения вовлеченности и экономии ресурсов.
Автоматические уведомления о неактивности позволяют напомнить пользователям о вашем сайте, стимулировать их вернуться или обновить профиль. Это может быть полезно как для коммерческих проектов, так и для сообществ и информационных ресурсов.
В этой статье разберём, как реализовать такую систему с помощью кода и популярных плагинов, а также как интегрировать её с WPCommunity для создания более дружелюбного пользовательского опыта.
Определение неактивного пользователя: критерии и подходы
Прежде чем создавать уведомления, нужно определить, по каким критериям считать пользователя неактивным. Обычно берут:
- Дата последнего входа в аккаунт.
- Дата последнего комментария или активности на сайте.
- Дата последнего обновления пользовательских данных.
WordPress по умолчанию не хранит дату последнего входа, поэтому для начала нужно добавить этот функционал. Сохраним дату входа в метаполе пользователя при авторизации.
Добавляем запись даты последнего входа
add_action('wp_login', 'wptour_update_last_login', 10, 2);
function wptour_update_last_login($user_login, $user) {
update_user_meta($user->ID, 'wptour_last_login', current_time('mysql'));
}Этот простой код обновляет метаполе wptour_last_login при каждом входе пользователя. Теперь мы можем по нему определять неактивность.
Создание функции для поиска неактивных пользователей
Далее напишем функцию, которая будет находить пользователей, не заходивших в систему более определённого времени. Например, 30 дней.
function wptour_get_inactive_users($days = 30) {
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
$args = [
'meta_key' => 'wptour_last_login',
'meta_value' => $date_threshold,
'meta_compare' => '<=',
'fields' => 'all_with_meta'
];
$user_query = new WP_User_Query($args);
return $user_query->get_results();
}Эта функция возвращает массив объектов пользователей, которые не входили на сайт более 30 дней (или другое количество, переданное в параметр).
Отправка автоматических уведомлений по email
Теперь реализуем отправку email-уведомлений этим пользователям. Можно использовать встроенную функцию wp_mail. В целях удобства и функционала советуем интегрировать с плагином Clearfy Pro, который позволяет гибко настраивать шаблоны писем и рассылки.
Пример простого цикла отправки письма:
function wptour_send_inactivity_notifications() {
$inactive_users = wptour_get_inactive_users(30);
foreach ($inactive_users as $user) {
$to = $user->user_email;
$subject = 'Мы скучаем по вам на нашем сайте';
$message = "Здравствуйте, " . $user->display_name . "!\n\nМы заметили, что вы давно не заходили на наш сайт. Приглашаем вас вернуться и проверить новые материалы!";
wp_mail($to, $subject, $message);
}
}Чтобы этот код выполнялся автоматически, можно добавить задачу в WordPress Cron.
Настройка WP Cron для автоматической рассылки
add_action('wptour_daily_inactivity_check', 'wptour_send_inactivity_notifications');
if (!wp_next_scheduled('wptour_daily_inactivity_check')) {
wp_schedule_event(time(), 'daily', 'wptour_daily_inactivity_check');
}Этот код запускает проверку и рассылку уведомлений раз в сутки.
Расширение функционала: интеграция с плагинами и дополнительными уведомлениями
Для более продвинутых сценариев можно добавить:
- Отправку уведомлений в личные сообщения WPCommunity, если используется форумная часть.
- Использование плагина WPRemark для сбора отзывов и реакции на уведомления.
- Добавление кнопок быстрого возвращения на сайт с предложением бонусов или новых функций.
Также можно расширить критерии неактивности, например, учитывать активность в комментариях или посещение определённых страниц, добавив соответствующие метаданные и интеграции.
Пример расширенной функции с учётом комментариев
function wptour_get_inactive_users_extended($days = 30) {
global $wpdb;
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . intval($days) . ' days'));
$users = get_users();
$inactive_users = [];
foreach ($users as $user) {
$last_login = get_user_meta($user->ID, 'wptour_last_login', true);
$last_comment_date = $wpdb->get_var($wpdb->prepare(
"SELECT MAX(comment_date) FROM $wpdb->comments WHERE user_id = %d",
$user->ID
));
if ( (!$last_login || $last_login <= $date_threshold) && (!$last_comment_date || $last_comment_date <= $date_threshold) ) {
$inactive_users[] = $user;
}
}
return $inactive_users;
}Этот код проверяет, когда пользователь последний раз входил и когда оставлял комментарии, возвращая только тех, кто действительно неактивен.
Заключение по теме автоматических уведомлений
Автоматизация уведомлений о неактивных пользователях помогает повысить вовлечённость и очистить базу. При правильном подходе вы сможете удержать аудиторию и поддерживать актуальность данных на сайте.
Использование кастомных метаполей, WP Cron и интеграция с плагинами Clearfy Pro и WPCommunity делает процесс гибким и мощным. Рекомендуется регулярно анализировать эффективность уведомлений и корректировать стратегию.