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

Интеграция Google Sheets с WordPress — востребованный способ автоматизировать обновление контента, особенно если данные часто меняются и их удобно редактировать в таблицах. В этой статье разберём, как настроить автоматический импорт данных из Google Sheets в WordPress с помощью собственного кода и без сторонних сервисов.

Почему выгодно использовать Google Sheets для управления контентом WordPress

Google Sheets — это универсальный инструмент для совместной работы с таблицами, который позволяет легко обновлять данные в режиме реального времени. Если в WordPress нужно регулярно обновлять прайсы, списки мероприятий, каталоги или любые табличные данные, то использование Google Sheets упрощает процесс и уменьшает вероятность ошибок.

Основные преимущества:

  • Обновления в таблице мгновенно видны в WordPress без ручного копирования.
  • Несколько пользователей могут одновременно редактировать данные.
  • Можно использовать стандартные формулы и функции Google Sheets для расчётов.

Настройка Google Sheets для импорта

Первым делом нужно подготовить таблицу для публичного или ограниченного доступа, чтобы WordPress мог получить к ней данные.

1. Сделайте таблицу доступной для чтения

В Google Sheets откройте Файл > Опубликовать в интернете. Выберите нужный лист и нажмите «Опубликовать». Это создаст публичный URL для доступа к данным.

2. Получите ссылку для экспорта в формате CSV

Для удобного парсинга в WordPress лучше получить данные в CSV. Формат ссылки для экспорта Google Sheets выглядит так:

https://docs.google.com/spreadsheets/d/ID_ТАБЛИЦЫ/export?format=csv&id=ID_ТАБЛИЦЫ&gid=ID_ЛИСТА

Где ID_ТАБЛИЦЫ — это уникальный идентификатор документа, а ID_ЛИСТА — идентификатор листа (можно посмотреть в URL).

Создание функции автоматического импорта данных в WordPress

Далее создадим функцию wpcodex_import_google_sheets(), которая будет скачивать CSV, парсить его и обновлять содержимое сайта.

Для примера импортируем данные в кастомный тип постов product, где каждая строка таблицы — отдельный товар.

Пример функции импорта

function wpcodex_import_google_sheets() {
    $url = 'https://docs.google.com/spreadsheets/d/ID_ТАБЛИЦЫ/export?format=csv&id=ID_ТАБЛИЦЫ&gid=ID_ЛИСТА';

    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        error_log('Ошибка загрузки CSV: ' . $response->get_error_message());
        return;
    }

    $csv = wp_remote_retrieve_body($response);
    if (empty($csv)) {
        error_log('Пустой CSV-файл');
        return;
    }

    $rows = str_getcsv($csv, "\n");
    $header = null;

    foreach ($rows as $row) {
        $data = str_getcsv($row, ',');
        if (!$header) {
            $header = $data; // первая строка - заголовки
            continue;
        }

        $item = array_combine($header, $data);

        // Проверка наличия обязательных полей
        if (empty($item['ID']) || empty($item['title'])) {
            continue;
        }

        // Проверяем, есть ли пост с таким ID
        $existing_post = get_post(intval($item['ID']));

        $post_data = array(
            'ID'           => $existing_post ? intval($item['ID']) : 0,
            'post_title'   => sanitize_text_field($item['title']),
            'post_type'    => 'product',
            'post_status'  => 'publish',
            'post_content' => sanitize_textarea_field($item['description']),
        );

        if ($existing_post) {
            wp_update_post($post_data);
        } else {
            $new_post_id = wp_insert_post($post_data);
            if (!$new_post_id) {
                error_log('Ошибка создания поста для товара: ' . $item['title']);
                continue;
            }
        }

        // Обновляем мета-поля товара
        update_post_meta($post_data['ID'] ?: $new_post_id, 'price', floatval($item['price']));
        update_post_meta($post_data['ID'] ?: $new_post_id, 'sku', sanitize_text_field($item['sku']));
    }
}

В этой функции мы:

  • Получаем CSV по публичному URL.
  • Парсим строки и заголовки.
  • Обновляем или создаём посты типа product.
  • Обновляем мета-поля, например цену и артикул.

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

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

Добавление интервала и задания

function wpcodex_add_cron_interval($schedules) {
    $schedules['every_five_minutes'] = array(
        'interval' => 300,
        'display' => 'Каждые 5 минут'
    );
    return $schedules;
}
add_filter('cron_schedules', 'wpcodex_add_cron_interval');

function wpcodex_schedule_import() {
    if (!wp_next_scheduled('wpcodex_google_sheets_import')) {
        wp_schedule_event(time(), 'every_five_minutes', 'wpcodex_google_sheets_import');
    }
}
add_action('wp', 'wpcodex_schedule_import');

add_action('wpcodex_google_sheets_import', 'wpcodex_import_google_sheets');

Теперь функция wpcodex_import_google_sheets() будет запускаться каждые 5 минут, автоматически обновляя данные из Google Sheets.

Рекомендации по безопасности и производительности

При работе с внешними данными важно учитывать несколько моментов:

  • Публикуйте Google Sheets с ограниченным доступом или используйте OAuth, если данные конфиденциальны.
  • Кешируйте результаты или используйте WP-Cron с разумным интервалом, чтобы не перегружать сервер.
  • Проверяйте и фильтруйте все входящие данные для предотвращения XSS и инъекций.
  • Используйте транзакции и логи, чтобы отслеживать успешность импорта и ошибки.

Использование плагина для упрощения задачи

Если хочется готовое решение без кода, можно рассмотреть плагин WPImport Google Sheets от WpShop, который предоставляет удобный интерфейс для настройки импорта таблиц в WordPress, поддерживает кастомные типы постов и мета-поля.

Плагин позволит сэкономить время на разработку и легко управлять импортом через админку.

Заключение

Автоматический импорт из Google Sheets — отличный способ синхронизировать данные для WordPress-проекта. С помощью приведённого кода и рекомендаций вы сможете настроить надёжное обновление контента, минимизируя ручной труд. При необходимости расширения функционала стоит обратить внимание на готовые плагины, которые интегрируются с WordPress и обеспечивают стабильность работы.

Как создать автоматический импорт сообщений из Telegram в WordPress
05.04.2026
WooCommerce: как автоматически обновлять статус заказа после успешной оплаты
03.06.2026
WooCommerce: как избавиться от проблемы повторных заказов после успешной оплаты
26.04.2026
Как создать автоматический импорт данных из Google Analytics в WordPress
11.03.2026
Как создать автоматический импорт записей из ВКонтакте в WordPress
12.04.2026