Автоматический импорт постов из Google Sheets в WordPress

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

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

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

Преимущества:

  • Лёгкость редактирования и совместная работа
  • Автоматизация импорта через API Google Sheets
  • Гибкость формата и структуры данных

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

Для начала нужно создать таблицу в Google Sheets с нужными столбцами, например:

  • post_title — заголовок поста
  • post_content — содержание
  • post_category — категория
  • post_status — статус публикации (publish, draft и т.д.)

Далее необходимо получить доступ к Google Sheets API:

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

Пример кода для импорта данных из Google Sheets в WordPress

Для работы с Google Sheets API в PHP можно использовать библиотеку Google API Client. Ниже пример функции wp3_import_posts_from_sheets(), которая получает данные из таблицы и создаёт посты в WordPress:

require_once __DIR__ . '/vendor/autoload.php'; // Подключение Google API Client

function wp3_import_posts_from_sheets() {
    $client = new Google_Client();
    $client->setApplicationName('WP3 Google Sheets Import');
    $client->setScopes(Google_Service_Sheets::SPREADSHEETS_READONLY);
    $client->setAuthConfig(__DIR__ . '/credentials.json');
    $service = new Google_Service_Sheets($client);

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

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

    if (empty($values)) {
        error_log('Нет данных для импорта');
        return;
    }

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

        if (!$post_title || !$post_content) {
            continue;
        }

        // Проверка на дубликаты по заголовку
        $existing = get_page_by_title($post_title, OBJECT, 'post');
        if ($existing) {
            continue;
        }

        $post_id = wp_insert_post([
            'post_title' => $post_title,
            'post_content' => $post_content,
            'post_status' => $post_status,
            'post_category' => [], // Категории добавим отдельно
        ]);

        if ($post_id && $post_category) {
            $term = term_exists($post_category, 'category');
            if (!$term) {
                $term = wp_insert_term($post_category, 'category');
            }
            if (!is_wp_error($term)) {
                wp_set_post_categories($post_id, [$term['term_id'] ?? $term['term_taxonomy_id']]);
            }
        }
    }
}

// Для автоматизации можно вызвать функцию по cron или вручную
// add_action('wp_loaded', 'wp3_import_posts_from_sheets');

Как автоматизировать импорт с помощью WP Cron

Чтобы импорт происходил регулярно, можно запланировать событие WP Cron. Для этого добавьте код регистрации задачи и её обработки в functions.php вашей темы или в плагин:

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

add_action('wp3_import_posts_event', 'wp3_import_posts_from_sheets');

Этот код запустит импорт постов из Google Sheets каждый час. Интервал можно настроить, добавив кастомный интервал через фильтр cron_schedules.

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

Если не хотите писать код самостоятельно, рекомендуем попробовать плагины, которые облегчают интеграцию:

  • OmniVideo — для импорта видео из таблиц с поддержкой кастомных полей.
  • WPRemark — модуль для автоматизации работы с комментариями и постами.

Советы по безопасности и оптимизации

При работе с Google API важно хранить ключи сервиса в защищённом месте вне публичного доступа. Не забывайте использовать санитайзеры WordPress для обработки входящих данных, чтобы избежать уязвимостей.

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

Как создать свой плагин WordPress: пошаговое руководство
08.11.2025
Как изменить уникальный slug постов в WordPress без потери SEO
23.03.2026
Как добавить внешний API в WordPress с помощью WPGPT
13.02.2026
Как автоматизировать удаление старых чрезвычайных постов в WordPress
06.04.2026
Как добавить поля в форму регистрации WordPress
12.04.2026