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

Создавайте вручную, не копируйте между установками. При клонировании проектов с помощью Duplicator или аналогичных плагинов часто переносятся старые идентификаторы, что может вызвать конфликты в базе данных. Лучше прописывать каждую запись напрямую через wp_insert_user() с явным указанием user_pass и role.

Зачем полагаться на GUI, если CLI быстрее и безопаснее? Команда WP-CLI:

wp user create admin_example admin@example.com --role=administrator --user_pass=123456

Работает без лишнего шума, сразу пишет в базу, минуя интерфейс и потенциальные CSRF-уязвимости. Но есть нюанс: по умолчанию создается запись user_registered с текущей датой, а это может быть критично при логировании действий.

Рекомендуется дополнительно задать дату регистрации вручную:


global $wpdb;
$wpdb->query( \"UPDATE $wpdb->users SET user_registered = \'2025-01-01 00:00:00\' WHERE user_login = \'admin_example\'\" );

Важно: если сайт работает в сети multisite, присваивайте доступ через add_user_to_blog(), иначе аккаунт не получит прав на конкретный сайт.

Присваивайте уникальные ID – иначе вас ждет каша при массовом импорте. Значение ID в wp_users можно указать вручную, если создавать записи напрямую через SQL, но тогда придется синхронизировать его с wp_usermeta, иначе интерфейс начнет вести себя странно: пустые поля, сбои в профиле, невозможность сохранить изменения.

Внимание! Нельзя присваивать роль вручную в базе, не прописав wp_capabilities и wp_user_level. Без них аккаунт будет существовать, но без прав. Как пустая оболочка. Проверяйте!

Пример записи в таблицу метаданных:


INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES
(42, \'wp_capabilities\', \'a:1:{s:13:\"administrator\";b:1;}\'),
(42, \'wp_user_level\', \'10\');

Иногда требуется временный доступ: создавайте такие записи с суффиксами _temp и автоматическим удалением через cron. Так вы избежите мусора и утечек доступа. И не забывайте про фильтры: pre_user_login, user_register и wp_login можно использовать для журналирования и ограничения активностей.

Читайте также:  Компания GoDaddy завершила сделку по приобретению ThemeBeans для расширения возможностей WordPress

И наконец, не передавайте пароль по почте. Никогда. Используйте одноразовую ссылку для установки, основанную на wp_create_user_request() и токенах. Это быстрее и безопаснее, чем обычная отправка данных. А главное – не оставляет следов в логах сервера.

Слишком много? Именно так и надо. Без точности здесь все разваливается.

Как получить список новых пользователей WordPress за определённый период

Используйте WP_User_Query с фильтрацией по дате регистрации. Без этого ничего не выйдет.

Пример запроса, который вернет всех зарегистрированных после 1 мая 2025 года:


$args = array(
  \'role__in\' => array(\'subscriber\', \'editor\', \'author\', \'contributor\', \'administrator\'),
  \'orderby\' => \'registered\',
  \'order\' => \'DESC\',
  \'meta_query\' => array(
    array(
      \'key\' => \'user_registered\',
      \'value\' => \'2025-05-01 00:00:00\',
      \'compare\' => \'>=\',
      \'type\' => \'DATETIME\'
    )
  )
);
$query = new WP_User_Query($args);

Не работает? Сюрприз – поле user_registered не хранится в usermeta. Это поле таблицы wp_users. Meta_query в данном случае бесполезен.

Вот рабочий способ:


global $wpdb;
$date = \'2025-05-01\';
$results = $wpdb->get_results( $wpdb->prepare(
  \"SELECT * FROM $wpdb->users WHERE user_registered >= %s ORDER BY user_registered DESC\",
  $date
));

Да, только через прямой SQL. Не тратьте время на костыли.

Важно! Поле user_registered не индексировано. Запрос может тормозить на больших базах.

Что дальше? Хотите получить email или ID? Перебирайте результат:


foreach ( $results as $user ) {
  echo $user->user_email . \' | \' . $user->user_registered . \'<br>\';
}

Можно добавить ограничение по дате окончания. Просто расширьте условие:


\"WHERE user_registered BETWEEN %s AND %s\"

Выгрузка в CSV? Примитивно. Используйте fputcsv в цикле. Не плодите плагины на ровном месте.

Внимание! Не доверяйте wp-admin фильтрам. Они не видят точные даты. Только ручной SQL дает контроль.

Этот метод голый, но честный. Оберните в REST-эндпоинт или WP-CLI, если нужно автоматизировать. Никаких сюрпризов, только контроль.

Читайте также:  Обзор популярных календарей для WordPress как выбрать подходящий

Открой wp-admin, перейди в раздел «Участники». Отсортируй таблицу по дате регистрации. Но стоп – WordPress по умолчанию не отображает дату создания аккаунта. Это ахиллесова пята.

Чтобы увидеть дату присоединения, необходимо подключить дополнительную функциональность. Самый прямой путь – установить плагин WP Users List With Registration Date. Он добавляет колонку «Дата регистрации» без лишней нагрузки. Мгновенно.

Важно: без стороннего кода CMS не отображает дату создания учетной записи, а значит ручной контроль становится невозможен.

А что если требуется выгрузка? Тут без Export User Data не обойтись. Этот инструмент добавляет раздел экспорта в меню «Инструменты». Выборка по ролям, фильтрация по времени создания, включение произвольных мета-полей – всё это доступно за два клика.

Если хочется без плагинов, используйте WP-CLI. Команда:

wp user list --field=ID,user_login,user_email,user_registered --format=csv

Результат – CSV-файл, готовый к импорту в Excel или Google Sheets. Но будь осторожен: данные выгружаются без фильтра. Хотите только зарегистрированных за последние 7 дней? Тогда так:

wp user list --format=csv --user_registered_after=\"$(date -d \'-7 days\' +%Y-%m-%d)\"

Пограничный случай: multisite. Здесь всё сложнее. Регистрация идет на уровне сети, но отображается только на уровне сайта. Используй фильтр user_register вместе с логикой мультисайтовой идентификации.

Проблемы начинаются при попытке массовой выгрузки с кастомными полями. Решение – написание собственного SQL-запроса или использования WP_User_Query с дополнительными аргументами:


$args = array(
  \'meta_key\' => \'registration_origin\',
  \'meta_value\' => \'frontend\',
  \'orderby\' => \'registered\',
  \'order\' => \'DESC\'
);
$users = get_users($args);

Внимание! Многие плагины экспорта не учитывают пользовательские поля и не фильтруют по ролям корректно. Проверь результат вручную!

Итог: чтобы получить отображение и выгрузку без ошибок, понадобится комбинировать расширения и писать код. Только так можно обеспечить прозрачность и контроль.

Настройка автоматических уведомлений о регистрации новых пользователей для администратора

Рекомендуется сразу включить оповещения через почту. Без этого вы можете пропустить подозрительную активность или массовую регистрацию с ботов. В ядре CMS по умолчанию таких сообщений нет – нужно вмешательство.

Читайте также:  Пять главных преимуществ выбора конструкторов сайтов для создания вашего веб-ресурса

Используйте хук user_register. Он срабатывает в момент добавления записи в таблицу wp_users. Пример кода, который отправляет уведомление на email администратора:


add_action(\'user_register\', \'notify_admin_on_registration\');
function notify_admin_on_registration($user_id) {
  $user = get_userdata($user_id);
  $email = get_option(\'admin_email\');
  $subject = \'Регистрация: \' . $user->user_login;
  $message = \'Добавлен аккаунт: \' . $user->user_email;
  wp_mail($email, $subject, $message);
}

Убедитесь, что SMTP работает корректно. В противном случае уведомления не дойдут. Для отладки – подключите плагин WP Mail Logging. Без логирования невозможно понять, уходит ли письмо, или все глохнет на хостинге.

Если используется кастомная форма регистрации (например, через WPForms или Gravity Forms), стандартный хук может не сработать. Придётся использовать внутренние события этих плагинов. Например, для WPForms:


add_action(\'wpforms_process_complete\', \'custom_register_notify\', 10, 4);
function custom_register_notify($fields, $entry, $form_data, $entry_id) {
  if ($form_data[\'id\'] == 5) { // ID нужной формы
    $email = get_option(\'admin_email\');
    $subject = \'Через форму добавлен контакт\';
    $message = \'Имя: \' . $fields[1][\'value\'] . \"\\nEmail: \" . $fields[2][\'value\'];
    wp_mail($email, $subject, $message);
  }
}

Важно! Не отправляйте письма с использованием mail() на дешёвом хостинге. Почта уйдёт в спам или не дойдёт вовсе. Используйте SMTP-подключение.

Проверка: создайте тестовую запись и отследите, приходит ли письмо. Если нет – возможны проблемы с настройкой хостинга, DNS или SPF-записями.

Поддержка мультиязычности? Подключите __() или _e() в строках темы письма. Пример:


$subject = __(\'Новая регистрация\', \'textdomain\');

Помните: отсутствие уведомлений = слепота. Особенно на сайтах с открытой регистрацией. Не ждите, пока станет поздно.

Периодически проверяйте, не блокирует ли отправку почты плагин безопасности. Некоторые из них могут вмешиваться в wp_mail.

Финал простой: автоматизация через хуки – обязательна. Без неё вы теряете контроль. Не дайте бэкэнду спать!

Оставьте комментарий

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