wpmake.ru wordpress WPMake

Как создать автоматический импорт данных из Excel в WordPress

Для многих проектов на WordPress возникает задача массового импорта данных из файлов Excel (.xls или .xlsx). Это может быть импорт товаров, сотрудников, клиентов, расписаний и других табличных данных. В этой статье подробно разберем, как создать надежный автоматический импорт данных из Excel в WordPress с помощью PHP, а также рассмотрим полезные плагины, которые облегчают эту задачу.

Почему нужен автоматический импорт из Excel в WordPress

Ручной ввод данных из Excel в WordPress — это трудоемкий и ошибкоопасный процесс. Автоматизация позволяет:

  • Экономить время при регулярном обновлении данных
  • Минимизировать человеческие ошибки
  • Интегрировать данные из внешних систем, которые формируют отчеты в Excel
  • Автоматически обновлять информацию на сайте по расписанию

Например, если у вас интернет-магазин на WooCommerce, и поставщик присылает прайс-листы в Excel, автоматический импорт позволит обновлять цены и наличие без ручной работы.

Популярные плагины для импорта Excel в WordPress

Существуют готовые решения, которые значительно упрощают задачу:

  • WP All Import — мощный плагин с поддержкой множества форматов, включая Excel (через конвертацию в CSV). Имеет удобный интерфейс и гибкие настройки маппинга полей.
  • Import any XML or CSV File to WordPress — похожий по функционалу инструмент с возможностью импорта товаров WooCommerce, постов, таксономий и метаполей.
  • TablePress — позволяет импортировать Excel как таблицы для отображения, но не для создания постов или товаров.
  • Clearfy Pro — помогает оптимизировать работу сайта и может пригодиться для настройки автоматизации процессов, включая импорт через расширения.

Однако для полного контроля и автоматизации без участия пользователя лучше написать собственный скрипт.

Как написать автоматический импорт из Excel в WordPress на PHP

Для работы с файлами Excel в PHP удобно использовать библиотеку PhpSpreadsheet. Она позволяет читать и обрабатывать данные из файлов .xls и .xlsx.

Шаг 1. Установка PhpSpreadsheet

Лучший способ — использовать Composer. В корне вашего WordPress сайта выполните:

composer require phpoffice/phpspreadsheet

Если Composer не используется, можно подключить библиотеку вручную, скачав с GitHub.

Шаг 2. Пример функции для импорта Excel в кастомный тип поста

Допустим, у нас есть кастомный тип поста product с метаполями price и sku. Пример функции, которую можно вызвать из WP-Cron или через AJAX для импорта:

function wpmake_import_excel_to_products($file_path) {
    require_once ABSPATH . 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\IOFactory;

    $spreadsheet = IOFactory::load($file_path);
    $sheet = $spreadsheet->getActiveSheet();
    $rows = $sheet->toArray();

    // Пропускаем заголовок в первой строке
    foreach (array_slice($rows, 1) as $row) {
        list($sku, $title, $price) = $row;

        // Проверяем, есть ли такой товар по SKU
        $existing = new WP_Query([
            'post_type' => 'product',
            'meta_query' => [
                ['key' => 'sku', 'value' => $sku, 'compare' => '=']
            ]
        ]);

        if ($existing->have_posts()) {
            // Обновляем товар
            $post_id = $existing->posts[0]->ID;
            wp_update_post(['ID' => $post_id, 'post_title' => $title]);
            update_post_meta($post_id, 'price', $price);
            update_post_meta($post_id, 'sku', $sku);
        } else {
            // Создаем новый товар
            $post_id = wp_insert_post([
                'post_title' => $title,
                'post_type' => 'product',
                'post_status' => 'publish'
            ]);
            update_post_meta($post_id, 'price', $price);
            update_post_meta($post_id, 'sku', $sku);
        }
    }
}

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

Автоматизация запуска импорта с помощью WP-Cron

Если нужно регулярно обновлять данные, можно запланировать задачу через WP-Cron:

function wpmake_schedule_import() {
    if (! wp_next_scheduled('wpmake_hourly_excel_import')) {
        wp_schedule_event(time(), 'hourly', 'wpmake_hourly_excel_import');
    }
}
add_action('wp', 'wpmake_schedule_import');

add_action('wpmake_hourly_excel_import', function() {
    $file = WP_CONTENT_DIR . '/uploads/data.xlsx';
    if (file_exists($file)) {
        wpmake_import_excel_to_products($file);
    }
});

Таким образом, импорт будет запускаться автоматически каждый час.

Обработка ошибок и валидация данных при импорте

Очень важно предусмотреть проверку данных из Excel, чтобы избежать ошибок и загрязнения базы. Например:

  • Проверять, что SKU не пустой и уникален
  • Проверять, что цена — число и положительное значение
  • Логировать ошибки в отдельный файл для анализа

Пример валидации внутри цикла импорта:

if (empty($sku) || !is_numeric($price) || $price <= 0) {
    error_log("Ошибка импорта: неверные данные для SKU $sku");
    continue; // пропускаем эту строку
}

Заключение

Автоматический импорт данных из Excel в WordPress — практическое и востребованное решение для многих сайтов. Использование библиотеки PhpSpreadsheet в связке с WP-Cron и кастомным кодом позволяет настроить гибкий и надежный процесс обновления данных без лишних усилий. Для удобства можно подключить плагины вроде Clearfy Pro для оптимизации и безопасности сайта, а также использовать WP All Import для более простых случаев.

Если у вас есть специфические задачи по импорту, можно расширить код примерами по обработке вложений, изображений и связей с таксономиями — это тема для отдельной статьи.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙