Автоматический экспорт данных из 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 вы сможете создавать регулярные выгрузки постов, пользователей и любых других данных. При необходимости расширяйте функционал, добавляйте новые форматы и интеграции.