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

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

Почему важен автоматический экспорт данных в CSV

Экспорт данных вручную через админку WordPress подходит при редких случаях, но если вам нужно регулярно делать выгрузки для аналитики, отчетности или миграции, лучше автоматизировать процесс. Это позволит:

  • Сэкономить время и избежать ошибок
  • Интегрировать сайт с внешними системами (CRM, бухгалтерия, маркетинг)
  • Обеспечить регулярное обновление данных без вашего участия

Для примера мы создадим функцию, которая раз в сутки выгружает последние публикации в CSV и сохраняет файл в директории uploads.

Создаем плагин для автоматического экспорта в CSV

Начнем с простого плагина с хуком WP Cron, который будет запускать экспорт по расписанию.

Регистрация события WP Cron

Чтобы запланировать повторяющуюся задачу, добавим активацию и деактивацию расписания:

function wptricks_activate_cron() {
    if ( ! wp_next_scheduled( 'wptricks_daily_export' ) ) {
        wp_schedule_event( time(), 'daily', 'wptricks_daily_export' );
    }
}
register_activation_hook( __FILE__, 'wptricks_activate_cron' );

function wptricks_deactivate_cron() {
    wp_clear_scheduled_hook( 'wptricks_daily_export' );
}
register_deactivation_hook( __FILE__, 'wptricks_deactivate_cron' );

Этот код добавляет ежедневное событие wptricks_daily_export, которое мы будем обрабатывать.

Основная функция экспорта в CSV

Функция выгружает последние 100 постов в CSV и сохраняет файл в uploads:

function wptricks_export_posts_to_csv() {
    $args = [
        'numberposts' => 100,
        'post_status' => 'publish',
    ];
    $posts = get_posts( $args );

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

    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/wptricks-export-' . date( 'Y-m-d' ) . '.csv';

    $fp = fopen( $file_path, 'w' );
    if ( ! $fp ) {
        return;
    }

    // Заголовки CSV
    fputcsv( $fp, [ 'ID', 'Заголовок', 'Дата', 'Автор', 'Ссылка' ] );

    foreach ( $posts as $post ) {
        $data = [
            $post->ID,
            $post->post_title,
            $post->post_date,
            get_the_author_meta( 'display_name', $post->post_author ),
            get_permalink( $post->ID ),
        ];
        fputcsv( $fp, $data );
    }

    fclose( $fp );
}
add_action( 'wptricks_daily_export', 'wptricks_export_posts_to_csv' );

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

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

Кроме записей, часто нужно выгружать пользователей. Рассмотрим пример экспорта пользователей с их email, ролями и метаданными.

function wptricks_export_users_to_csv() {
    $users = get_users();

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

    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/wptricks-users-export-' . date( 'Y-m-d' ) . '.csv';

    $fp = fopen( $file_path, 'w' );
    if ( ! $fp ) {
        return;
    }

    // Заголовки CSV
    fputcsv( $fp, [ 'ID', 'Логин', 'Email', 'Роли', 'Дата регистрации', 'Телефон' ] );

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

        $data = [
            $user->ID,
            $user->user_login,
            $user->user_email,
            $roles,
            $user->user_registered,
            $phone,
        ];
        fputcsv( $fp, $data );
    }

    fclose( $fp );
}
add_action( 'wptricks_daily_export', 'wptricks_export_users_to_csv' );

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

Как проверить и отладить экспорт

Для отладки полезно запускать функции вручную. Можно добавить временное меню или вызвать напрямую:

if ( isset( $_GET['wptricks_run_export'] ) ) {
    wptricks_export_posts_to_csv();
    wptricks_export_users_to_csv();
    echo 'Экспорт выполнен';
    exit;
}

Это позволит протестировать работу экспорта без ожидания cron.

Автоматизация и интеграция с WPShop

Если вы используете сервисы из WPShop, например, WPRemark для сбора отзывов или WPStories для сторис, то выгрузка данных может пригодиться для передачи информации в эти плагины или внешние системы. Вы можете расширить функции экспорта, чтобы выгружать данные из этих плагинов, используя их API и методы.

Выводы

Автоматический экспорт данных в CSV из WordPress — это реальное решение для упрощения отчетности и интеграции с внешним ПО. С помощью WP Cron и простого кода на PHP вы сможете создавать регулярные выгрузки постов, пользователей и любых других данных. При необходимости расширяйте функционал, добавляйте новые форматы и интеграции.

WooCommerce: автоматическое изменение стоимости товаров по условиям на разных страницах
02.07.2026
Как использовать REST API для автоматизации WordPress
03.03.2026
WooCommerce: автоматическое продление статусов заказов по статусу оплаты
31.05.2026
WooCommerce: автоматическое удаление заказов с отсрочкой платежа
28.05.2026
Оптимизация загрузки CSS в WordPress: ускоряем работу сайта
18.11.2025