wp-kurs.ru wordpress WP-Kurs

Как создать автоматический экспорт пользователей WordPress в CSV

Экспорт данных пользователей из WordPress — частая задача, особенно если нужно передать базу клиентов или участников сайта для анализа или миграции. В этой статье расскажем, как создать автоматический экспорт списка пользователей WordPress в CSV-файл с помощью собственного кода, а также рассмотрим полезные плагины для расширения функционала.

Зачем нужен автоматический экспорт пользователей WordPress

Ручной экспорт пользователей через phpMyAdmin или панели хостинга неудобен и не подходит для регулярного обновления данных. Автоматизация позволяет:

  • Регулярно получать актуальную базу пользователей.
  • Экспортировать только нужные поля и метаданные.
  • Интегрировать выгрузку с внешними сервисами и CRM.
  • Автоматизировать рассылки и сегментацию на основе данных пользователей.

Для этого удобнее всего использовать собственный код, который можно подключить в плагине или в functions.php темы, а также готовые решения с расширенными настройками.

Пример кода автоматического экспорта пользователей WordPress в CSV

Ниже пример функции, которая формирует CSV-файл с данными пользователей и сохраняет его в папке uploads. Экспорт включает стандартные поля: ID, логин, email, дата регистрации, роль. Функция вызывается по крону или вручную.

function wp_kurs_export_users_to_csv() {
    if ( ! current_user_can('manage_options') ) {
        return;
    }

    $args = array(
        'fields' => array('ID', 'user_login', 'user_email', 'user_registered', 'roles'),
        'orderby' => 'ID',
        'order' => 'ASC',
    );
    $users = get_users($args);

    if (empty($users)) {
        return;
    }

    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/users-export.csv';

    $file = fopen($file_path, 'w');
    // Заголовки CSV
    fputcsv($file, array('ID', 'Логин', 'Email', 'Дата регистрации', 'Роль'));

    foreach ($users as $user) {
        $role = is_array($user->roles) ? implode(', ', $user->roles) : '';
        fputcsv($file, array(
            $user->ID,
            $user->user_login,
            $user->user_email,
            $user->user_registered,
            $role
        ));
    }

    fclose($file);

    // Возвращаем URL файла для скачивания
    return $upload_dir['baseurl'] . '/users-export.csv';
}

Вы можете вызвать wp_kurs_export_users_to_csv() из админки, например, добавив кнопку или запустив по крону. Файл будет доступен по URL из папки uploads.

Добавление экспорта по крону

Чтобы запускать экспорт автоматически, добавим событие WP-Cron и хук:

function wp_kurs_schedule_users_export() {
    if ( ! wp_next_scheduled('wp_kurs_users_export_event') ) {
        wp_schedule_event(time(), 'daily', 'wp_kurs_users_export_event');
    }
}
add_action('wp', 'wp_kurs_schedule_users_export');

add_action('wp_kurs_users_export_event', function() {
    wp_kurs_export_users_to_csv();
});

Этот код будет запускать экспорт раз в сутки. Путь к файлу можно использовать для автоматической отправки или загрузки.

Расширение функционала: экспорт метаданных пользователей

Часто нужно выгружать не только базовые данные, но и произвольные поля (user meta), например, телефон, страна, дата рождения. Для этого в коде добавим получение метаданных через get_user_meta() и добавим их в CSV.

function wp_kurs_export_users_with_meta_to_csv() {
    $users = get_users();
    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/users-export-with-meta.csv';

    $file = fopen($file_path, 'w');
    // Заголовки
    fputcsv($file, array('ID', 'Логин', 'Email', 'Телефон', 'Страна'));

    foreach ($users as $user) {
        $phone = get_user_meta($user->ID, 'phone', true);
        $country = get_user_meta($user->ID, 'country', true);

        fputcsv($file, array(
            $user->ID,
            $user->user_login,
            $user->user_email,
            $phone,
            $country
        ));
    }
    fclose($file);
    return $upload_dir['baseurl'] . '/users-export-with-meta.csv';
}

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

Обзор полезных плагинов для экспорта пользователей

Если не хочется писать код, можно использовать готовые решения. Вот несколько плагинов, которые помогут экспортировать пользователей в CSV и другие форматы:

  • Export Users to CSV — простой плагин для экспорта всех пользователей с выбором полей и фильтров. Поддерживает экспорт метаданных и ролей.
  • WP All Export — мощный инструмент для экспорта любых данных WordPress, включая пользователей. Позволяет настраивать шаблоны выгрузок и интегрируется с WP All Import.
  • WP User Export — плагин для создания и планирования экспорта пользователей с возможностью выгрузки в CSV и Excel.

Все эти плагины доступны на WPSHOP с дополнительными инструкциями и обновлениями.

Автоматическая отправка CSV файла по email

Часто нужно не просто сохранить CSV в папку, а отправить его на почту. Добавим пример функции, которая отправляет файл после экспорта:

function wp_kurs_send_export_by_email($file_path, $email) {
    if (!file_exists($file_path)) {
        return false;
    }

    $subject = 'Экспорт пользователей WordPress';
    $message = 'Во вложении файл с экспортом пользователей.';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    $attachments = array($file_path);

    return wp_mail($email, $subject, $message, $headers, $attachments);
}

// Использование после экспорта
$file_url = wp_kurs_export_users_to_csv();
$file_path = str_replace(wp_upload_dir()['baseurl'], wp_upload_dir()['basedir'], $file_url);
wp_kurs_send_export_by_email($file_path, 'admin@example.com');

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

Рекомендации по безопасности и производительности

При экспорте пользователей важно учитывать безопасность:

  • Ограничьте доступ к функции экспорта только администраторам или доверенным ролям.
  • Не включайте в CSV пароли или чувствительные данные.
  • Используйте WP-Cron для планового экспорта, чтобы не нагружать сервер при пиковых посещениях.

Также если у вас очень много пользователей, используйте постраничный запрос с параметрами number и offset, чтобы не перегружать память сервера.

Пример постраничного экспорта:

function wp_kurs_export_users_paged($page = 1, $per_page = 100) {
    $args = array(
        'number' => $per_page,
        'offset' => ($page - 1) * $per_page,
    );
    return get_users($args);
}

Таким образом можно экспортировать пользователей партиями и постепенно формировать итоговый CSV.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙