wpbackup.ru wordpress WPBackup.ru

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

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

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

Готовые плагины часто имеют широкий функционал, который не всегда нужен, и могут замедлять сайт. Кроме того, иногда нужно настроить специфический формат CSV или автоматический экспорт по расписанию с отправкой на почту или FTP. Собственный плагин даёт полный контроль, позволяет оптимизировать процесс и интегрировать экспорт с другими бизнес-процессами.

Например, вы можете автоматически выгружать список пользователей, заказы WooCommerce или посты с определёнными метаданными без лишних данных и вручную нажимать кнопки.

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

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

WordPress использует класс $wpdb для работы с базой данных. Это универсальный и безопасный способ получить любые данные из таблиц. Вот как можно получить, например, список пользователей с их email:

global $wpdb;
$results = $wpdb->get_results("SELECT ID, user_login, user_email FROM {$wpdb->users}", ARRAY_A);

Результат — массив ассоциативных массивов, который удобно обрабатывать для создания CSV.

Важно использовать подготовленные запросы или методы $wpdb для защиты от SQL-инъекций.

Создание функции экспорта данных в CSV и её подключение к WordPress

Основная задача — преобразовать массив данных в CSV и сохранить файл на сервере или сразу отправить пользователю.

Вот пример функции для генерации CSV из массива данных:

function wpbackup_export_to_csv($data, $filename) {
    if (empty($data)) {
        return false;
    }
    $csv_file = fopen($filename, 'w');
    // Записываем заголовок
    fputcsv($csv_file, array_keys($data[0]));
    // Записываем строки
    foreach ($data as $row) {
        fputcsv($csv_file, $row);
    }
    fclose($csv_file);
    return true;
}

Используем эту функцию вместе с $wpdb для создания CSV:

global $wpdb;
$data = $wpdb->get_results("SELECT ID, user_login, user_email FROM {$wpdb->users}", ARRAY_A);
$file = plugin_dir_path(__FILE__) . 'exports/users.csv';
wpbackup_export_to_csv($data, $file);

Этот код создаст файл users.csv в папке плагина.

Добавление автоматического экспорта по расписанию с WP-Cron

Чтобы автоматизировать экспорт, настроим запуск функции по расписанию с помощью WP-Cron. Добавим событие, которое будет выполняться, например, раз в сутки:

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

add_action('wpbackup_daily_export_hook', 'wpbackup_run_daily_export');

function wpbackup_run_daily_export() {
    global $wpdb;
    $data = $wpdb->get_results("SELECT ID, user_login, user_email FROM {$wpdb->users}", ARRAY_A);
    $file = plugin_dir_path(__FILE__) . 'exports/users_' . date('Y-m-d') . '.csv';
    wpbackup_export_to_csv($data, $file);
}

Такой подход позволит каждый день создавать свежий CSV с данными пользователей.

Отправка CSV по email после экспорта

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

function wpbackup_run_daily_export() {
    global $wpdb;
    $data = $wpdb->get_results("SELECT ID, user_login, user_email FROM {$wpdb->users}", ARRAY_A);
    $file = plugin_dir_path(__FILE__) . 'exports/users_' . date('Y-m-d') . '.csv';
    if (wpbackup_export_to_csv($data, $file)) {
        $to = 'manager@example.com';
        $subject = 'Ежедневный экспорт пользователей WordPress';
        $message = 'Во вложении файл с актуальными данными пользователей.';
        $headers = array('Content-Type: text/html; charset=UTF-8');
        wp_mail($to, $subject, $message, $headers, array($file));
    }
}

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

Практические советы по оптимизации и безопасности экспорта

1. Создавайте папку exports с правами на запись, но не давайте к ней публичный доступ через веб — защитите её через .htaccess или настройками сервера.

2. При работе с большими таблицами разбивайте экспорт на части с помощью LIMIT и OFFSET, чтобы не перегрузить память.

3. Используйте nonce и проверки прав доступа, если добавляете интерфейс для запуска экспорта вручную, чтобы исключить несанкционированный запуск.

4. Логируйте ошибки и успешные экспорты для мониторинга работоспособности.

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

<?php
/**
 * Plugin Name: WPBackup CSV Export
 * Description: Автоматический экспорт пользователей WordPress в CSV.
 * Version: 1.0
 * Author: wpbackup.ru
 */

function wpbackup_export_to_csv($data, $filename) {
    if (empty($data)) {
        return false;
    }
    if (!file_exists(dirname($filename))) {
        mkdir(dirname($filename), 0755, true);
    }
    $csv_file = fopen($filename, 'w');
    fputcsv($csv_file, array_keys($data[0]));
    foreach ($data as $row) {
        fputcsv($csv_file, $row);
    }
    fclose($csv_file);
    return true;
}

function wpbackup_run_daily_export() {
    global $wpdb;
    $data = $wpdb->get_results("SELECT ID, user_login, user_email FROM {$wpdb->users}", ARRAY_A);
    $file = plugin_dir_path(__FILE__) . 'exports/users_' . date('Y-m-d') . '.csv';
    wpbackup_export_to_csv($data, $file);
}

function wpbackup_schedule_export() {
    if (!wp_next_scheduled('wpbackup_daily_export_hook')) {
        wp_schedule_event(time(), 'daily', 'wpbackup_daily_export_hook');
    }
}
add_action('wp', 'wpbackup_schedule_export');
add_action('wpbackup_daily_export_hook', 'wpbackup_run_daily_export');

?>

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

Использование плагина Clearfy Pro для оптимизации процессов экспорта

Если на сайте установлен плагин Clearfy Pro, он поможет оптимизировать работу сайта, отключая ненужные функции и снижая нагрузку при выполнении тяжелых задач, таких как экспорт больших таблиц. Кроме того, Clearfy Pro имеет инструменты для безопасного управления файлами и может помочь с ограничением доступа к папке экспорта.

Заключение по созданию собственного плагина экспорта CSV

Создание собственного плагина экспорта данных — отличный способ получить автоматизацию с гибкой настройкой под задачи проекта. Используя $wpdb, стандартные PHP-функции работы с CSV и WP-Cron, вы легко можете настроить регулярные выгрузки и интеграцию с внешними системами. Обязательно учитывайте безопасность и оптимизацию при работе с большими объёмами данных. Если хотите расширить функционал, подключайте отправку по email или загрузку на FTP, интегрируйте с облачными хранилищами через API.

Подробное руководство и примеры кода помогут начать быстро и избежать типичных ошибок. Для повышения безопасности и производительности рекомендуем также рассмотреть плагины из WPShop.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее