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

Импорт данных из Excel в WordPress часто требуется для заполнения каталога товаров, создания базы клиентов или публикации таблиц с большим объемом информации. Обычно для этого используют плагины, но в некоторых случаях может понадобиться реализовать импорт самостоятельно, без сторонних расширений. В этой статье мы разберем, как сделать автоматический импорт Excel-файлов (.xlsx) в WordPress с помощью PHP-кода, используя библиотеку PhpSpreadsheet, и интегрировать это в ваш сайт.

Почему стоит делать импорт из Excel через код, а не плагины

Плагины для импорта удобны, но имеют ограничения по кастомизации и часто избыточны по функциям. При создании собственного решения вы получаете полный контроль над процессом, экономите ресурсы сайта и можете гибко обрабатывать данные по своим правилам. Это особенно актуально для уникальных бизнес-процессов или нестандартных структур данных.

Кроме того, самостоятельный импорт помогает интегрироваться с другими системами и автоматизировать задачи без участия пользователя — например, загружать новые данные по расписанию с помощью WP-Cron.

Основные шаги для реализации импорта Excel в WordPress

Для начала нужно:

  • Установить библиотеку PhpSpreadsheet, которая позволяет читать Excel-файлы в PHP.
  • Создать функцию, которая будет обрабатывать загруженный Excel и преобразовывать данные для записи в WordPress (например, в записи или пользовательские типы записей).
  • Настроить загрузку файла и запуск функции импорта, например, через форму в админ-панели или по Cron.

Установка PhpSpreadsheet в WordPress проект

Если ваш сайт использует Composer, достаточно в корне проекта выполнить:

composer require phpoffice/phpspreadsheet

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

require_once __DIR__ . '/vendor/autoload.php';

Пример функции импорта Excel в записи WordPress

Предположим, у нас есть Excel с колонками: Заголовок, Содержимое, Категория. Нам нужно создать посты с этими данными.

function wpbegin_import_excel_to_posts($filePath) {
    if (!file_exists($filePath)) {
        return new WP_Error('file_not_found', 'Файл не найден');
    }

    // Подключаем PhpSpreadsheet
    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
    $spreadsheet = $reader->load($filePath);
    $sheet = $spreadsheet->getActiveSheet();
    $rows = $sheet->toArray();

    // Пропускаем заголовок таблицы
    unset($rows[0]);

    foreach ($rows as $row) {
        list($title, $content, $category) = $row;

        // Проверяем обязательные поля
        if (empty($title) || empty($content)) {
            continue;
        }

        // Создаем пост
        $post_data = array(
            'post_title'   => sanitize_text_field($title),
            'post_content' => wp_kses_post($content),
            'post_status'  => 'publish',
            'post_type'    => 'post'
        );

        $post_id = wp_insert_post($post_data);

        if (is_wp_error($post_id)) {
            continue;
        }

        // Добавляем категорию
        if (!empty($category)) {
            $term = term_exists(sanitize_text_field($category), 'category');
            if ($term === 0 || $term === null) {
                $term = wp_insert_term(sanitize_text_field($category), 'category');
            }

            if (!is_wp_error($term)) {
                wp_set_post_terms($post_id, (int)$term['term_id'] ?? $term['term_taxonomy_id'], 'category');
            }
        }
    }

    return true;
}

Добавление загрузки файла и запуск импорта в админке

Для удобства можно добавить простую форму в админ-панель, чтобы загружать Excel и запускать импорт без FTP. Например:

add_action('admin_menu', function() {
    add_submenu_page('tools.php', 'Импорт Excel', 'Импорт Excel', 'manage_options', 'wpbegin-import-excel', 'wpbegin_import_excel_page');
});

function wpbegin_import_excel_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Доступ запрещен');
    }

    if (isset($_POST['submit']) && !empty($_FILES['excel_file']['tmp_name'])) {
        $uploaded_file = $_FILES['excel_file']['tmp_name'];
        $result = wpbegin_import_excel_to_posts($uploaded_file);

        if (is_wp_error($result)) {
            echo '<div class="notice notice-error"><p>' . esc_html($result->get_error_message()) . '</p></div>';
        } else {
            echo '<div class="notice notice-success"><p>Импорт завершен успешно.</p></div>';
        }
    }

    echo '<form method="post" enctype="multipart/form-data">';
    echo '<input type="file" name="excel_file" accept=".xlsx" required />';
    echo '<input type="submit" name="submit" class="button button-primary" value="Импортировать" />';
    echo '</form>';
}

Обработка ошибок и улучшения

При работе с реальными файлами стоит добавить более детальную валидацию данных и обработку ошибок. Например, логировать все неудачные записи, чтобы потом исправить их вручную.

Можно расширить функционал, чтобы поддерживать импорт в кастомные типы записей, добавлять произвольные поля (метаданные) или загружать изображения, указанные в Excel.

Для автоматизации регулярных импортов используйте WP-Cron, чтобы запускать функцию по расписанию, например, ежедневно или еженедельно.

Альтернативы: плагины и сервисы

Если вы всё же хотите использовать готовые решения, обратите внимание на плагины с поддержкой импорта из Excel, например, Clearfy Pro, который оптимизирует работу сайта и может помочь с импортом.

Также есть специализированные сервисы для интеграции Excel и WordPress, но они часто платные и требуют настройки API.

Выводы и рекомендации

Создание собственного решения для импорта Excel в WordPress без плагинов — это отличный способ получить гибкий и оптимизированный процесс загрузки данных. Использование PhpSpreadsheet позволяет работать с современными форматами .xlsx и легко адаптировать код под любые задачи.

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

Как убрать дублированный контент в WordPress: практические методы и примеры
01.01.2026
Как сделать автоматический импорт из CSV в WordPress без плагинов
19.03.2026
WooCommerce: как добавить пользовательское поле в форму оплаты через хук
08.05.2026
Как добавить собственные настройки в админ-панель WordPress
01.12.2025
Оптимизация базы данных WordPress: практические советы
05.11.2025