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

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

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

Google Sheets — это удобный и знакомый большинству редакторов инструмент для ведения таблиц, который позволяет работать с данными в режиме реального времени. Он подходит для:

  • Управления списками продуктов, услуг, мероприятий;
  • Ведения каталогов или прайс-листов, которые часто обновляются;
  • Хранения данных для динамического вывода на сайте.

Использование Google Sheets в связке с WordPress избавит от необходимости каждый раз вручную вносить изменения в админке.

Подготовка Google Sheets и получение доступа к API

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

  1. Создайте таблицу в Google Sheets с нужными данными.
  2. Перейдите в Google Cloud Console и создайте новый проект.
  3. Включите API Google Sheets и Google Drive для проекта.
  4. Создайте учетные данные (OAuth 2.0 или сервисный аккаунт) и скачайте JSON с ключами.
  5. Дайте доступ сервисному аккаунту к вашей таблице (через кнопку "Поделиться" в Google Sheets).

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

Создание плагина WordPress для импорта данных из Google Sheets

Создадим простой плагин с функцией wpbook_import_google_sheets_data(), которая будет обращаться к API Google Sheets и обновлять записи в WordPress.

<?php
/*
Plugin Name: WPBook Google Sheets Import
Description: Автоматический импорт данных из Google Sheets в WordPress
Version: 1.0
Author: WPBook
*/

require_once __DIR__ . '/vendor/autoload.php'; // Google API Client

function wpbook_import_google_sheets_data() {
    $client = new Google_Client();
    $client->setScopes([
        Google_Service_Sheets::SPREADSHEETS_READONLY,
        Google_Service_Drive::DRIVE_READONLY,
    ]);
    $client->setAuthConfig(__DIR__ . '/credentials.json');
    $service = new Google_Service_Sheets($client);

    $spreadsheetId = 'ВАШ_ID_ТАБЛИЦЫ';
    $range = 'Лист1!A1:C100'; // диапазон с данными

    try {
        $response = $service->spreadsheets_values->get($spreadsheetId, $range);
        $values = $response->getValues();
        if (empty($values)) {
            error_log('WPBook Import: Нет данных в Google Sheets.');
            return;
        }

        foreach ($values as $row) {
            $post_title = sanitize_text_field($row[0] ?? '');
            $post_content = sanitize_textarea_field($row[1] ?? '');
            $custom_field = sanitize_text_field($row[2] ?? '');

            if (!$post_title) continue;

            // Проверка, существует ли запись с таким заголовком
            $existing = get_page_by_title($post_title, OBJECT, 'post');

            if ($existing) {
                // Обновляем запись
                wp_update_post([
                    'ID' => $existing->ID,
                    'post_content' => $post_content,
                ]);
                update_post_meta($existing->ID, '_wpbook_custom_field', $custom_field);
            } else {
                // Создаем новую запись
                $post_id = wp_insert_post([
                    'post_title' => $post_title,
                    'post_content' => $post_content,
                    'post_status' => 'publish',
                    'post_type' => 'post',
                ]);
                if ($post_id && !is_wp_error($post_id)) {
                    update_post_meta($post_id, '_wpbook_custom_field', $custom_field);
                }
            }
        }
    } catch (Exception $e) {
        error_log('WPBook Import Error: ' . $e->getMessage());
    }
}

// Добавим крон-задачу для автоматизации импорта
function wpbook_schedule_google_sheets_import() {
    if (!wp_next_scheduled('wpbook_google_sheets_import_event')) {
        wp_schedule_event(time(), 'hourly', 'wpbook_google_sheets_import_event');
    }
}
add_action('wp', 'wpbook_schedule_google_sheets_import');
add_action('wpbook_google_sheets_import_event', 'wpbook_import_google_sheets_data');

// Для ручного запуска из админки можно добавить пункт меню
function wpbook_import_menu() {
    add_submenu_page('tools.php', 'Импорт Google Sheets', 'Импорт Google Sheets', 'manage_options', 'wpbook-google-sheets-import', 'wpbook_import_page');
}
add_action('admin_menu', 'wpbook_import_menu');

function wpbook_import_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Недостаточно прав');
    }
    if (isset($_POST['wpbook_import_run'])) {
        wpbook_import_google_sheets_data();
        echo '<div class="updated notice">Импорт выполнен.</div>';
    }
    echo '<h2>Импорт данных из Google Sheets</h2>';
    echo '<form method="post"><input type="submit" name="wpbook_import_run" value="Запустить импорт" class="button button-primary" /></form>';
}
?>

Объяснение кода и настройка

В этом плагине:

  • Используется официальный PHP-клиент Google API (google-api-php-client), который нужно установить через Composer в папку плагина.
  • Функция wpbook_import_google_sheets_data() обращается к API, получает данные из указанного диапазона таблицы, очищает их и обновляет или создаёт записи в WordPress.
  • Используется хук WP-Cron, чтобы запускать импорт автоматически каждый час. Вы можете изменить частоту по своему усмотрению.
  • Добавлен простой интерфейс в админке WordPress для ручного запуска импорта.

Для работы плагина необходимо заменить ВАШ_ID_ТАБЛИЦЫ на ID вашей Google Sheets. Этот ID можно найти в URL таблицы после /d/ и до следующего слеша.

Расширение функционала: импорт в кастомные типы записей и метаданные

Если вы хотите импортировать данные в кастомные типы записей, например, товары или события, замените параметр 'post_type' => 'post' на нужный тип, например 'product' или ваш кастомный тип. Также можно расширить обработку метаданных, добавив больше пользовательских полей.

Пример добавления кастомного поля с типом даты:

update_post_meta($post_id, '_wpbook_event_date', sanitize_text_field($row[3] ?? ''));

Также можно использовать плагин Clearfy Pro, который облегчает оптимизацию сайта и управление cron-задачами, чтобы избежать проблем с планировщиком.

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

Автоматический импорт из Google Sheets решает задачу оперативного обновления контента без прямого редактирования WordPress. Такой подход подходит для сайтов с каталогами, прайс-листами, расписаниями и другими таблицами.

Не забудьте внимательно настроить права доступа к таблице и хранить ключи безопасности в защищённом месте.

Если нужно более простое решение, обратите внимание на сервисы интеграции типа Zapier или Integromat, однако собственный плагин даёт максимальную гибкость и контроль.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как избежать проблем с пересекающимися правилами в WooCommerce
03.05.2026
Как создать автоматическую защиту от спама на формы WordPress без CAPTCHA
11.12.2025
Как создать пользовательские типы записей (CPT) в WordPress с примером кода
22.03.2026
Как использовать WP хуки для автоматического изменения цен в WooCommerce
12.05.2026
Как создать автоматический импорт постов из внешнего источника в WordPress
26.01.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее