Экспорт данных из базы 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.