Работа с большими объемами данных в WordPress часто требует импорта информации из внешних источников, таких как файлы CSV. Автоматизация этого процесса позволяет экономить время и исключить ошибки, связанные с ручным вводом. В этой статье разберем, как создать автоматический импорт CSV в WordPress с помощью кода и плагинов, а также рассмотрим примеры решения на практике.
Почему важен автоматический импорт CSV в WordPress
Импорт данных из CSV-файлов востребован при переносе товаров в WooCommerce, добавлении записей в кастомные типы записей, обновлении пользовательских полей и прочих задачах. Если импорт проводится вручную, это занимает много времени и подвержено ошибкам. Автоматизация через скрипты или плагины позволяет:
- Проводить импорт регулярно по расписанию;
- Обрабатывать большие объемы данных без участия человека;
- Обеспечивать консистентность и правильность данных;
- Интегрировать импорт с другими процессами сайта.
Далее рассмотрим два способа реализации: через код и с использованием плагинов.
Автоматический импорт CSV через код в WordPress
Обработка CSV и добавление записей
Для импорта CSV-файла в WordPress с помощью PHP нам понадобится функция для чтения файла, парсинга и создания записей. Ниже пример функции wpkit_import_csv_to_posts(), которая читает CSV и создает записи типа post:
function wpkit_import_csv_to_posts($csv_file_path) {
if (!file_exists($csv_file_path)) {
return new WP_Error('file_not_found', 'CSV файл не найден');
}
if (($handle = fopen($csv_file_path, 'r')) === false) {
return new WP_Error('file_open_error', 'Не удалось открыть CSV файл');
}
$header = null;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
if (!$header) {
$header = $row; // Первая строка - заголовки
continue;
}
$data = array_combine($header, $row);
// Создаем запись
$post_data = array(
'post_title' => sanitize_text_field($data['title']),
'post_content' => sanitize_textarea_field($data['content']),
'post_status' => 'publish',
'post_type' => 'post',
);
$post_id = wp_insert_post($post_data);
if (!is_wp_error($post_id)) {
// Допустим, есть пользовательские поля
if (!empty($data['custom_field'])) {
update_post_meta($post_id, 'custom_field', sanitize_text_field($data['custom_field']));
}
}
}
fclose($handle);
return true;
}Эту функцию можно вызывать из консоли WP-CLI, крон-задачи или через админку. Для автоматического запуска по расписанию удобно использовать WP-Cron.
Добавление задачи в WP-Cron для регулярного импорта
Чтобы импорт происходил автоматически, добавим в functions.php вызов с расписанием:
add_action('wpkit_daily_csv_import', 'wpkit_do_csv_import');
function wpkit_do_csv_import() {
$csv_path = WP_CONTENT_DIR . '/uploads/import/data.csv';
wpkit_import_csv_to_posts($csv_path);
}
// Планируем событие, если оно не запланировано
if (!wp_next_scheduled('wpkit_daily_csv_import')) {
wp_schedule_event(time(), 'daily', 'wpkit_daily_csv_import');
}Таким образом, импорт будет запускаться ежедневно, проверяя и обрабатывая файл по указанному пути.
Использование плагинов для автоматического импорта CSV
Если вы не хотите писать код, можно воспользоваться специализированными плагинами, которые поддерживают импорт CSV с возможностью автоматизации:
- WP All Import — мощный импортёр с визуальным редактором, поддерживает автоматический импорт по расписанию из URL или папки. Подробнее на WPSHOP.
- Really Simple CSV Importer — простой и легкий плагин для базового импорта.
- WP Ultimate CSV Importer — поддерживает импорт в кастомные типы записей, таксономии и метаполя, есть настройки расписания.
Плагины позволяют настроить соответствие колонок CSV и полей в WordPress без написания кода, а также запускать импорт по расписанию или вручную.
Настройка WP All Import для автоматического импорта
Чтобы настроить автоматический импорт в WP All Import:
- Установите и активируйте плагин.
- Создайте новый импорт и укажите источник CSV — можно указать URL или локальный файл.
- Настройте сопоставление полей CSV с полями записей.
- В разделе "Scheduling" активируйте автоматический запуск по расписанию (требуется версия Pro).
- Сохраните и запустите тестовый импорт.
Это позволяет с минимальными усилиями организовать регулярное обновление данных сайта.
Обработка ошибок и логирование при импорте CSV
При автоматическом импорте ошибок избежать сложно, поэтому важно организовать логирование и обработку ошибок. В коде можно расширить функцию wpkit_import_csv_to_posts(), добавив ведение лога:
function wpkit_import_csv_to_posts_with_log($csv_file_path) {
$log = [];
if (!file_exists($csv_file_path)) {
$log[] = 'CSV файл не найден';
return $log;
}
$handle = fopen($csv_file_path, 'r');
if ($handle === false) {
$log[] = 'Не удалось открыть CSV файл';
return $log;
}
$header = null;
$row_num = 0;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
$row_num++;
if (!$header) {
$header = $row;
continue;
}
$data = array_combine($header, $row);
if (!$data) {
$log[] = "Ошибка парсинга строки $row_num";
continue;
}
$post_data = [
'post_title' => sanitize_text_field($data['title']),
'post_content' => sanitize_textarea_field($data['content']),
'post_status' => 'publish',
'post_type' => 'post',
];
$post_id = wp_insert_post($post_data);
if (is_wp_error($post_id)) {
$log[] = "Ошибка создания записи на строке $row_num: " . $post_id->get_error_message();
continue;
}
}
fclose($handle);
if (empty($log)) {
$log[] = 'Импорт завершен успешно';
}
return $log;
}Логи можно сохранять в отдельный файл или выводить в админке. Это поможет быстро выявлять проблемы с данными и корректировать CSV.
Советы по подготовке CSV для успешного импорта
Чтобы импорт прошел гладко, обратите внимание на следующие моменты:
- Файл должен быть сохранен в кодировке UTF-8 без BOM.
- Заголовки колонок должны точно совпадать с теми, что используются в коде или плагине.
- Данные должны быть корректно экранированы, особенно если содержат запятые или кавычки.
- Минимизируйте использование специальных символов и HTML в CSV.
- Перед массовым импортом протестируйте на небольшой выборке данных.
Эти простые правила помогут избежать большинства проблем с импортом.
Заключение
Автоматический импорт CSV в WordPress — ключевой инструмент для эффективного управления контентом и данными. Использование собственного кода позволяет гибко настраивать процесс, а плагины значительно упрощают задачу для тех, кто не хочет вникать в программирование. В любом случае, важно уделять внимание обработке ошибок и качеству данных.
Если хотите попробовать удобные инструменты для импорта и управления контентом, рекомендуем посмотреть WP All Import на WPSHOP — один из лучших плагинов в своей категории.