wp-code.ru wordpress WP-Codе

Автоматический импорт данных из Google Sheets в WordPress с помощью REST API и PHP

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

Почему именно Google Sheets и REST API для импорта данных?

Google Sheets предоставляет удобный интерфейс для редактирования и хранения данных. Его API позволяет программно получать данные в формате JSON. В сочетании с WordPress REST API мы можем:

  • Автоматически получать свежие данные без ручного копирования
  • Обновлять записи в WordPress на основе изменений в таблице
  • Интегрировать импорт с любыми кастомными типами записей и мета-данными

Такой подход подходит для каталогов, каталогов товаров, расписаний и других динамических данных.

Подготовка Google Sheets для доступа через API

Для начала нам нужно получить доступ к Google Sheets API:

  1. Перейдите в Google Cloud Console и создайте новый проект или выберите существующий.
  2. Включите Google Sheets API для проекта.
  3. Создайте сервисный аккаунт (Service Account) и загрузите JSON-файл с ключами.
  4. Откройте нужную таблицу в Google Sheets и предоставьте доступ сервисному аккаунту, добавив его email с правом просмотра.

Это позволит вашему WordPress-сайту безопасно обращаться к таблице по API.

Создание REST API эндпоинта в WordPress для импорта данных

Далее создадим собственный REST API эндпоинт для запуска импорта. В functions.php вашей темы или в отдельном плагине добавьте следующий код:

function wpcode_register_import_endpoint() {
    register_rest_route('wpcode/v1', '/import-google-sheet', array(
        'methods' => 'POST',
        'callback' => 'wpcode_handle_import_google_sheet',
        'permission_callback' => function () {
            return current_user_can('manage_options');
        }
    ));
}
add_action('rest_api_init', 'wpcode_register_import_endpoint');

function wpcode_handle_import_google_sheet(WP_REST_Request $request) {
    // Путь к JSON с ключами сервисного аккаунта
    $credentials_path = __DIR__ . '/credentials.json';
    if (!file_exists($credentials_path)) {
        return new WP_Error('no_credentials', 'Credentials file not found', array('status' => 500));
    }

    // ID Google Sheets и диапазон
    $spreadsheetId = 'ВАШ_ID_ТАБЛИЦЫ';
    $range = 'Лист1!A2:E100';

    // Используем Google API Client (нужно установить с помощью composer или вручную)
    require_once __DIR__ . '/vendor/autoload.php';
    $client = new Google_Client();
    $client->setAuthConfig($credentials_path);
    $client->addScope(Google_Service_Sheets::SPREADSHEETS_READONLY);

    $service = new Google_Service_Sheets($client);

    try {
        $response = $service->spreadsheets_values->get($spreadsheetId, $range);
        $values = $response->getValues();

        if (empty($values)) {
            return new WP_Error('empty_data', 'No data found in sheet', array('status' => 404));
        }

        foreach ($values as $row) {
            // Предполагаем, что столбцы: заголовок, описание, цена и т.д.
            $post_data = array(
                'post_title'   => sanitize_text_field($row[0]),
                'post_content' => sanitize_textarea_field($row[1]),
                'post_status'  => 'publish',
                'post_type'    => 'product', // пример кастомного типа записи
            );

            // Проверяем, существует ли запись с таким заголовком
            $existing = get_page_by_title($row[0], OBJECT, 'product');
            if ($existing) {
                $post_data['ID'] = $existing->ID;
                wp_update_post($post_data);
            } else {
                wp_insert_post($post_data);
            }
        }

        return array('success' => true, 'imported' => count($values));
    } catch (Exception $e) {
        return new WP_Error('api_error', $e->getMessage(), array('status' => 500));
    }
}

В этом коде создаётся эндпоинт /wp-json/wpcode/v1/import-google-sheet, который по POST-запросу импортирует или обновляет записи из таблицы. Для работы потребуется библиотека Google API Client, которую можно установить через Composer:

composer require google/apiclient:^2.0

Пример вызова импорта через wp-cli или curl

Для удобства можно запускать импорт из командной строки или автоматизировать через cron:

curl -X POST -u admin:password https://example.com/wp-json/wpcode/v1/import-google-sheet

Вместо базовой авторизации можно использовать nonce или OAuth, но для простоты показан базовый пример.

Расширение: добавление мета-полей и кастомной логики

Если в Google Sheets есть дополнительные данные, например, цена, артикул, категория, вы можете добавлять их как мета-поля в WordPress:

update_post_meta($post_id, '_price', floatval($row[2]));
update_post_meta($post_id, '_sku', sanitize_text_field($row[3]));

Также можно реализовать проверку уникальности не только по заголовку, а по артикулу или другому уникальному полю.

Полезные плагины для работы с импортом и таблицами

  • WP All Import — мощный плагин для импорта данных из CSV и XML, можно использовать в связке с экспортом Google Sheets в CSV.
  • Clearfy Pro — для оптимизации и безопасности, полезен при работе с внешними интеграциями.
  • WPRemark — для работы с комментариями и отзывами, если вы импортируете отзывы из таблиц.

Резюме и советы по безопасности

Автоматический импорт из Google Sheets в WordPress — отличное решение для проектов с частыми обновлениями контента. Важно:

  • Хранить ключи сервисного аккаунта в безопасном месте вне публичной директории
  • Ограничивать доступ к REST API эндпоинтам только администраторам
  • Обрабатывать и валидировать данные из таблиц, чтобы избежать ошибок и XSS-уязвимостей
  • Регулярно проверять работу интеграции и логи ошибок

Надеюсь, этот пример поможет вам быстро настроить стабильный и безопасный импорт данных из Google Sheets в WordPress.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше