Часто возникает задача периодически обновлять контент на сайте WordPress, используя данные из таблиц Google Sheets. Это удобно, когда контент ведут вне WordPress, а обновления должны появляться автоматически. В этой статье рассмотрим, как реализовать автоматический импорт данных из Google Sheets в WordPress с помощью Google Sheets API и собственного кода, а также какие плагины могут облегчить задачу.
Почему использовать Google Sheets для управления контентом
Google Sheets — популярный инструмент для коллективной работы с таблицами, который позволяет легко редактировать данные из браузера или мобильного приложения. Благодаря API Google Sheets можно подключить эти данные к сайту и автоматически обновлять информацию без ручного копирования или загрузки файлов.
Использование Google Sheets для контента удобно в случаях:
- Каталоги товаров или услуг с регулярным обновлением цен и описаний;
- Списки мероприятий, расписаний;
- Обновление таблиц с рейтингами, лидерами и пр.;
- Автоматизация загрузки данных для кастомных постов, таблиц на сайте.
Подготовка Google Sheets и получение доступа к API
Для начала нужно подготовить таблицу и настроить доступ к API:
- Создайте Google Sheets с нужными данными. Рекомендуется структурировать таблицу так, чтобы первая строка содержала заголовки столбцов.
- Настройте доступ к Google Sheets API. Для этого создайте проект в Google Cloud Console, включите Google Sheets API и создайте сервисный аккаунт с ключом в формате JSON.
- Добавьте email сервисного аккаунта в список пользователей с доступом к вашей таблице (через кнопку "Поделиться" в Google Sheets), чтобы API смог читать данные.
Подробные инструкции по настройке есть в официальной документации Google: Google Sheets API Quickstart.
Пример кода для импорта данных из Google Sheets в WordPress
Ниже пример функции wpacademy_import_google_sheets_data(), которая подключается к Google Sheets API и получает данные из таблицы:
function wpacademy_import_google_sheets_data() {
require_once __DIR__ . '/vendor/autoload.php'; // Google API Client
$client = new \Google_Client();
$client->setApplicationName('WPAcademy Google Sheets Import');
$client->setScopes([Google_Service_Sheets::SPREADSHEETS_READONLY]);
$client->setAuthConfig(__DIR__ . '/credentials.json');
$client->setAccessType('offline');
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'ВАШ_SPREADSHEET_ID';
$range = 'Лист1!A1:E100';
try {
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (empty($values)) {
return 'Данные не найдены.';
} else {
$headers = array_shift($values); // первая строка - заголовки
$result = [];
foreach ($values as $row) {
$rowData = [];
foreach ($headers as $index => $header) {
$rowData[$header] = $row[$index] ?? '';
}
$result[] = $rowData;
}
return $result;
}
} catch (Exception $e) {
return 'Ошибка при получении данных: ' . $e->getMessage();
}
}Функция возвращает массив данных из таблицы, который можно использовать для создания или обновления записей в WordPress.
Пример использования данных для создания кастомных постов
Предположим, что у вас есть кастомный тип записи product, и таблица содержит поля: title, description, price. Тогда можно импортировать так:
function wpacademy_create_products_from_sheets() {
$data = wpacademy_import_google_sheets_data();
if (is_string($data)) {
error_log($data); // лог ошибки
return;
}
foreach ($data as $item) {
wp_insert_post([
'post_title' => sanitize_text_field($item['title']),
'post_content' => sanitize_textarea_field($item['description']),
'post_type' => 'product',
'post_status' => 'publish',
], true);
$post_id = get_last_post_id(); // функция для получения ID последнего поста
if ($post_id) {
update_post_meta($post_id, 'price', floatval($item['price']));
}
}
}Дополнительно можно добавить проверку на существование записи по уникальному полю, чтобы обновлять записи, а не создавать дубликаты.
Плагины для интеграции Google Sheets с WordPress
Если вы не хотите писать код, можно использовать готовые решения:
- WP Sheet Editor — позволяет редактировать записи WordPress через таблицы, а также импортировать и экспортировать данные.
- Inline Google Spreadsheet Viewer — вставляет таблицы Google Sheets прямо в посты и страницы с автоматическим обновлением.
- Advanced Custom Fields (ACF) + ACF Google Sheets Add-on — интеграция пользовательских полей с таблицами Google.
Для автоматизации импорта можно настроить cron-задачи, которые будут запускать кастомные функции импорта, используя WP-Cron или серверный cron.
Настройка WP-Cron для регулярного импорта
Добавьте в файл functions.php или в плагин следующий код:
add_action('wpacademy_hourly_import', 'wpacademy_create_products_from_sheets');
if (!wp_next_scheduled('wpacademy_hourly_import')) {
wp_schedule_event(time(), 'hourly', 'wpacademy_hourly_import');
}Так импорт будет запускаться каждый час, обновляя данные на сайте.
Советы и лучшие практики
При работе с Google Sheets API и WordPress учитывайте:
- Ограничения API по количеству запросов — не запускайте импорт слишком часто.
- Сохраняйте ключи и конфиденциальные данные в безопасных местах, не выкладывайте в публичный доступ.
- Обрабатывайте ошибки подключения и отсутствия данных, чтобы избежать сбоев сайта.
- Оптимизируйте запросы, выбирайте только необходимые диапазоны данных.
- Следите за форматом данных в таблицах — ошибки в форматировании могут привести к ошибкам при импорте.
Заключение
Автоматический импорт из Google Sheets — мощный инструмент для управления контентом, который позволяет обновлять сайт WordPress максимально удобно и быстро. Используя Google Sheets API и собственные функции, вы получите гибкое решение под любые задачи. При этом плагины помогут упростить настройку и интеграцию, особенно если вы не хотите писать код самостоятельно.
Для дополнительной автоматизации, например, с визуальными настройками импорта, можно рассмотреть продукты с WPShop.