Иногда в проектах на WordPress возникает задача регулярно импортировать данные из таблиц Google Sheets — например, для обновления каталога товаров, расписания мероприятий или базы контактов. В этой статье мы подробно разберём, как автоматически подтягивать данные из Google Sheets в WordPress без лишних плагинов и с помощью минимального кода. Это решение отлично подойдёт для тех, кто хочет гибко настраивать импорт и контролировать процесс.
Почему стоит использовать Google Sheets для импорта данных в WordPress
Google Sheets — удобный инструмент для совместной работы и редактирования таблиц онлайн. В отличие от CSV-файлов, которые нужно вручную загружать, Google Sheets позволяет хранить актуальные данные в облаке и автоматически получать к ним доступ через API.
Основные преимущества такого подхода:
- Автоматическое обновление данных без ручного импорта.
- Совместный доступ и редактирование таблиц без технических знаний.
- Возможность интеграции с другими сервисами Google и внешними приложениями.
Как получить доступ к Google Sheets через API: создание проекта и ключа
Для работы с Google Sheets через WordPress нам понадобится Google Sheets API. Вот основные шаги:
- Перейдите в Google Cloud Console и создайте новый проект.
- В разделе «API и сервисы» включите Google Sheets API.
- В разделе «Учетные данные» создайте ключ API или OAuth 2.0 клиент (для сервера подойдёт ключ API).
- Скопируйте ID таблицы из URL Google Sheets. Например, из адреса
https://docs.google.com/spreadsheets/d/1a2b3c4d5e6f7g8h9i0j/edit#gid=0нужно взять1a2b3c4d5e6f7g8h9i0j.
Важно: таблица должна быть открыта для чтения по ссылке, иначе запросы API будут возвращать ошибку доступа.
Пример функции для импорта данных из Google Sheets в WordPress
Создадим функцию wprobot_fetch_google_sheet_data, которая будет делать запрос к Google Sheets API и возвращать данные в виде массива.
function wprobot_fetch_google_sheet_data($spreadsheet_id, $range, $api_key) {
$url = sprintf(
'https://sheets.googleapis.com/v4/spreadsheets/%s/values/%s?key=%s',
$spreadsheet_id,
$range,
$api_key
);
$response = wp_remote_get($url);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data['values'])) {
return false;
}
return $data['values'];
}
Здесь:
$spreadsheet_id— ID вашей таблицы Google Sheets.$range— диапазон ячеек, например,Sheet1!A1:D100.$api_key— ваш API ключ.
Обработка и вывод данных в WordPress
После получения массива с данными можно вывести его на страницу в виде таблицы или использовать для наполнения кастомных постов, товаров и т.п.
function wprobot_display_google_sheet_table($spreadsheet_id, $range, $api_key) {
$rows = wprobot_fetch_google_sheet_data($spreadsheet_id, $range, $api_key);
if (!$rows) {
return '<p>Не удалось получить данные из Google Sheets.</p>';
}
$output = '<table border="1" cellpadding="5" cellspacing="0">';
// Заголовок таблицы
$output .= '<thead><tr>';
foreach ($rows[0] as $header) {
$output .= '<th>' . esc_html($header) . '</th>';
}
$output .= '</tr></thead>';
// Данные
$output .= '<tbody>';
for ($i = 1; $i < count($rows); $i++) {
$output .= '<tr>';
foreach ($rows[$i] as $cell) {
$output .= '<td>' . esc_html($cell) . '</td>';
}
$output .= '</tr>';
}
$output .= '</tbody></table>';
return $output;
}
Чтобы вывести таблицу на странице, можно создать шорткод:
add_shortcode('wprobot_google_sheet', function($atts) {
$atts = shortcode_atts([
'id' => '',
'range' => 'Sheet1!A1:D100',
'key' => '',
], $atts);
if (empty($atts['id']) || empty($atts['key'])) {
return '<p>Укажите ID таблицы и API ключ.</p>';
}
return wprobot_display_google_sheet_table($atts['id'], $atts['range'], $atts['key']);
});
Вызовите на странице: [wprobot_google_sheet id="ВАШ_ID" key="ВАШ_КЛЮЧ" range="Sheet1!A1:D10"]
Автоматизация обновления: как обновлять данные без ручного вмешательства
Чтобы данные обновлялись автоматически, можно использовать WP-Cron и кэширование. Например, сохранять данные в transient на час, а при обновлении очищать кеш и подтягивать свежие данные.
Пример кода для обновления данных и сохранения в transient:
function wprobot_update_sheet_cache($spreadsheet_id, $range, $api_key) {
$data = wprobot_fetch_google_sheet_data($spreadsheet_id, $range, $api_key);
if ($data) {
set_transient('wprobot_google_sheet_data', $data, HOUR_IN_SECONDS);
}
}
// Запускаем раз в час
if (!wp_next_scheduled('wprobot_hourly_sheet_update')) {
wp_schedule_event(time(), 'hourly', 'wprobot_hourly_sheet_update');
}
add_action('wprobot_hourly_sheet_update', function() use ($spreadsheet_id, $range, $api_key) {
wprobot_update_sheet_cache($spreadsheet_id, $range, $api_key);
});
В функции вывода тогда берём данные из кэша get_transient('wprobot_google_sheet_data'), если нет — загружаем напрямую.
Полезные плагины для интеграции Google Sheets с WordPress
Если вы не хотите писать код, есть готовые решения:
- WP Robot — мощный плагин для автоматизации контента, который поддерживает импорт из разных источников, включая Google Sheets.
- Clearfy Pro — оптимизатор с инструментами для интеграции и ускорения сайтов.
- WP All Import с дополнением для Google Sheets — позволяет импортировать данные из таблиц с гибкой настройкой.
Заключение: когда и почему стоит использовать автоматический импорт из Google Sheets
Автоматический импорт данных из Google Sheets в WordPress идеально подходит, если у вас часто меняются данные, а редактировать сайт вручную неудобно. Такой подход экономит время и минимизирует ошибки при обновлении. Настроив API и написав простой код, вы получаете гибкий инструмент для интеграции табличных данных с вашим сайтом.