Часто при работе с сайтом на WordPress возникает необходимость экспортировать записи (посты) в удобном формате для анализа, отчетности или передачи данных. Excel — один из самых популярных форматов для таких задач. В этой статье разберем, как сделать автоматический экспорт постов WordPress в Excel с помощью кода и плагинов, а также настроить регулярную отправку файлов.
Почему нужен автоматический экспорт постов в Excel
Экспорт данных вручную через админку WordPress ограничен и не всегда удобен, особенно при больших объемах или необходимости регулярной выгрузки. Автоматизация позволяет:
- Сохранять актуальные данные без участия администратора.
- Интегрировать выгрузку в бизнес-процессы.
- Периодически отправлять отчеты на почту.
- Облегчить анализ данных в Excel или других программах.
Рассмотрим как реализовать такое решение самостоятельно и с помощью популярных плагинов.
Как программно экспортировать посты в Excel в WordPress
Подготовка и подключение библиотеки для работы с Excel
Для создания Excel-файлов из PHP лучше всего использовать библиотеку PhpSpreadsheet. Она поддерживает XLSX и другие форматы и работает на сервере без дополнительных приложений.
Чтобы подключить PhpSpreadsheet в WordPress, можно использовать Composer (если есть доступ к серверу и разрешена установка пакетов) или загрузить библиотеку вручную в папку плагина.
Пример подключения через Composer:
composer require phpoffice/phpspreadsheetЕсли Composer использовать нельзя, скачайте архив с GitHub и разместите в папке с плагином.
Пример функции для экспорта постов в Excel
Ниже пример функции wpboot_export_posts_to_excel, которая собирает посты, формирует Excel и сохраняет файл в папку uploads:
function wpboot_export_posts_to_excel() {
if ( ! class_exists('PhpOffice\PhpSpreadsheet\Spreadsheet') ) {
return new WP_Error('missing_library', 'PhpSpreadsheet library is not loaded.');
}
$args = [
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'publish',
];
$posts = get_posts($args);
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Заголовки столбцов
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Заголовок');
$sheet->setCellValue('C1', 'Дата публикации');
$sheet->setCellValue('D1', 'Автор');
$row = 2;
foreach ($posts as $post) {
$sheet->setCellValue('A' . $row, $post->ID);
$sheet->setCellValue('B' . $row, $post->post_title);
$sheet->setCellValue('C' . $row, get_the_date('Y-m-d', $post));
$sheet->setCellValue('D' . $row, get_the_author_meta('display_name', $post->post_author));
$row++;
}
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/wpboot-posts-export.xlsx';
try {
$writer->save($file_path);
} catch (Exception $e) {
return new WP_Error('save_error', $e->getMessage());
}
return $upload_dir['baseurl'] . '/wpboot-posts-export.xlsx';
}Эта функция возвращает URL к созданному Excel-файлу или ошибку.
Автоматизация экспорта через WP-Cron
Чтобы выгрузка происходила автоматически, например, раз в сутки, добавим задачу в WP-Cron.
Регистрация расписания и задачи
function wpboot_add_cron_interval($schedules) {
$schedules['daily'] = [
'interval' => 86400,
'display' => __('Раз в сутки')
];
return $schedules;
}
add_filter('cron_schedules', 'wpboot_add_cron_interval');
function wpboot_schedule_export() {
if (!wp_next_scheduled('wpboot_daily_export_event')) {
wp_schedule_event(time(), 'daily', 'wpboot_daily_export_event');
}
}
add_action('wp', 'wpboot_schedule_export');
add_action('wpboot_daily_export_event', 'wpboot_do_daily_export');
function wpboot_do_daily_export() {
$file_url = wpboot_export_posts_to_excel();
if (!is_wp_error($file_url)) {
// Здесь можно отправить файл по почте или залогировать результат
}
}Теперь раз в сутки будет создаваться файл с экспортом.
Плагины для экспорта постов в Excel и их возможности
Если не хочется писать код, можно использовать готовые плагины. Вот несколько проверенных вариантов:
- WP All Export — мощный инструмент для экспорта любых данных из WordPress, включая посты, с гибкими настройками и поддержкой Excel. Есть бесплатная и платная версии.
- Export any WordPress data to XML/CSV — позволяет экспортировать данные в CSV, которые легко открыть в Excel.
- Advanced Order Export For WooCommerce — если нужно экспортировать посты типа заказов WooCommerce в Excel.
Использование плагинов упростит задачу, но не всегда позволяет настроить автоматическую отправку или форматирование так гибко, как код.
Пример настройки WP All Export для Excel
После установки:
- Создайте новый экспорт и выберите тип постов.
- Настройте поля, которые хотите экспортировать (заголовок, дата, автор и др.).
- Выберите формат Excel (XLSX).
- Настройте расписание экспорта, чтобы выгрузка происходила автоматически.
Отправка Excel-файла на почту автоматически
Часто нужно не просто создать файл, а отправить его кому-то на почту. Добавим в функцию wpboot_do_daily_export отправку письма с вложением:
function wpboot_do_daily_export() {
$file_url = wpboot_export_posts_to_excel();
if (is_wp_error($file_url)) {
error_log('WPBoot export error: ' . $file_url->get_error_message());
return;
}
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/wpboot-posts-export.xlsx';
$to = 'admin@example.com';
$subject = 'Автоматический экспорт постов WordPress';
$message = 'В приложении файл с актуальным экспортом постов.';
$headers = ['Content-Type: text/html; charset=UTF-8'];
$attachments = [$file_path];
wp_mail($to, $subject, $message, $headers, $attachments);
}Не забудьте заменить admin@example.com на нужный адрес.
Выводы и рекомендации
Автоматический экспорт постов в Excel — полезный инструмент для администраторов и разработчиков, который можно реализовать как кодом, так и с помощью плагинов.
Используйте библиотеку PhpSpreadsheet для гибкости и контроля вывода. WP-Cron поможет автоматизировать процесс. Для быстрой реализации подойдут плагины, например WP All Export.
Если хотите расширить функционал, например, добавить кастомные поля, таксономии или фильтрацию, код позволяет сделать это легко и быстро.
Для безопасности и производительности запускайте экспорт в off-peak время и следите за размером файлов.
Дополнительно можете ознакомиться с плагином WPRemark для автоматизации работы с комментариями и контентом на сайте.