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

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

Почему импорт из Google Sheets в WordPress полезен

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

  • Обновлять данные на сайте без участия администратора.
  • Избежать ошибок при переносе информации вручную.
  • Использовать Google Sheets как простой CMS для определённых типов контента.

Вместо ручного копирования вы можете настроить регулярный автоматический импорт через API.

Обзор подхода: Google Sheets API и WP Cron

Главная идея — через Google Sheets API получать данные из таблицы, записывать их в кастомные типы записей или метаданные WordPress, а затем отображать на сайте. Запускать процесс будем через WP Cron — планировщик задач WordPress.

Основные шаги:

  1. Создать проект в Google Cloud и получить ключ API для доступа к Google Sheets.
  2. Написать функцию для получения и обработки данных из таблицы.
  3. Создать кастомный тип записей или использовать существующий для хранения данных.
  4. Настроить WP Cron для регулярного запуска импорта.

Получение данных из Google Sheets с помощью PHP

Для доступа к Google Sheets понадобится Google API Client для PHP. Его можно установить через Composer:

composer require google/apiclient:^2.0

Пример функции для импорта данных из публичной таблицы (без авторизации):

function wptalk_import_google_sheet_public() {
    $sheet_id = 'ВАШ_ID_ТАБЛИЦЫ';
    $range = 'Лист1!A1:E';
    $url = "https://sheets.googleapis.com/v4/spreadsheets/" . $sheet_id . "/values/" . $range . "?key=ВАШ_API_КЛЮЧ";
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        error_log('Ошибка запроса к Google Sheets: ' . $response->get_error_message());
        return;
    }
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    if (empty($data['values'])) {
        error_log('Данные из Google Sheets пусты');
        return;
    }
    foreach ($data['values'] as $row) {
        // Пример обработки строки, например, создать кастомный тип записи
        $post_title = sanitize_text_field($row[0] ?? 'Без названия');
        $post_content = sanitize_textarea_field($row[1] ?? '');
        $existing = get_page_by_title($post_title, OBJECT, 'sheet_item');
        if (!$existing) {
            wp_insert_post([
                'post_title' => $post_title,
                'post_content' => $post_content,
                'post_status' => 'publish',
                'post_type' => 'sheet_item'
            ]);
        }
    }
}

Здесь мы получаем диапазон ячеек, декодируем JSON и создаём записи с типом sheet_item.

Регистрация кастомного типа записи для хранения данных

Добавьте в functions.php или в свой плагин регистрацию типа записи sheet_item:

function wptalk_register_sheet_item_cpt() {
    $args = [
        'label' => 'Элементы из Google Sheets',
        'public' => true,
        'supports' => ['title', 'editor'],
        'show_in_rest' => true
    ];
    register_post_type('sheet_item', $args);
}
add_action('init', 'wptalk_register_sheet_item_cpt');

Так вы сможете редактировать и отображать импортированные данные в админке.

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

Чтобы импорт запускался автоматически, зарегистрируйте событие WP Cron:

function wptalk_schedule_google_sheet_import() {
    if (!wp_next_scheduled('wptalk_google_sheet_import_hook')) {
        wp_schedule_event(time(), 'hourly', 'wptalk_google_sheet_import_hook');
    }
}
add_action('wp', 'wptalk_schedule_google_sheet_import');
add_action('wptalk_google_sheet_import_hook', 'wptalk_import_google_sheet_public');

Этот код запускает импорт каждый час. Вы можете изменить период на дневной или другой, зарегистрировав свой интервал.

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

Если кодинг не ваш конёк, можно воспользоваться плагинами, которые упрощают импорт из Google Sheets:

  • WP All Import Pro с аддоном для Google Sheets — мощное решение для сложных импортов, поддерживает кастомные типы записей и поля.
  • Sheets to WP Table Live Sync
  • Inline Google Spreadsheet Viewer

Для более глубокой интеграции и кастомизации лучше использовать API и собственные функции.

Советы по безопасности и производительности

При работе с Google Sheets API соблюдайте меры безопасности:

  • Не храните в открытом виде ключи API в коде — используйте константы в wp-config.php или отдельные файлы с ограниченным доступом.
  • Ограничьте права доступа ключа Google API (по IP или по сервису).
  • Кэшируйте результаты импорта, чтобы не перегружать сайт и API.

Для кэширования можно использовать Transients API WordPress:

function wptalk_get_sheet_data_cached() {
    $cache_key = 'wptalk_sheet_data';
    $data = get_transient($cache_key);
    if ($data === false) {
        // Получаем данные из API
        $data = wptalk_fetch_data_from_google_sheets();
        set_transient($cache_key, $data, 3600); // Кэш на 1 час
    }
    return $data;
}

Пример вывода импортированных данных на сайте

Для показа данных из кастомного типа записей sheet_item в шаблоне темы можно использовать WP_Query:

$args = [
    'post_type' => 'sheet_item',
    'posts_per_page' => 10
];
$query = new WP_Query($args);
if ($query->have_posts()) {
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        echo '<li>' . get_the_title() . ': ' . get_the_content() . '</li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo 'Данные не найдены';
}

Это базовый пример, который можно адаптировать под любые нужды.

Заключение

Автоматический импорт из Google Sheets в WordPress — удобное решение для динамичного контента. Используя Google Sheets API, WP Cron и кастомные типы записей, вы сможете легко обновлять данные без ручной работы. Если нужно быстро и без программирования — рассмотрите специализированные плагины. Обязательно учитывайте безопасность и производительность при реализации.

Подробнее о плагинах и инструментах для WordPress можно узнать на wpshop.ru.

Как установить границы пагинации в WordPress для улучшения навигации
13.09.2026
Оптимизация базы данных WordPress: успешные методы и практические рекомендации
10.09.2026
Как отключить автоматическое удаление неактивных пользователей в WordPress
25.08.2026
Как изменить URL авторского блога в WordPress
12.09.2026
Как избавиться от замедления WordPress при использовании подгрузки изображений
10.09.2026