Работа с внешними таблицами — частая задача для разработчиков WordPress. Google Sheets является удобным инструментом для хранения данных, и часто возникает необходимость автоматически импортировать информацию из таблиц в записи WordPress. В этой статье мы подробно рассмотрим, как настроить автоматический импорт из Google Sheets в WordPress с помощью Google Sheets API и собственного кода.
Почему стоит использовать Google Sheets для хранения данных
Google Sheets — это облачный сервис, где вы можете легко создавать и редактировать таблицы, работать в команде и предоставлять доступ по ссылке. В сравнении с локальными Excel-файлами, Google Sheets проще интегрировать с веб-сайтами благодаря API. Это особенно удобно для сайтов на WordPress, где данные из таблиц можно автоматически синхронизировать с контентом.
Примером такой задачи может быть импорт каталога товаров, расписания мероприятий, списка контактов или рейтингов, которые обновляются в таблице, а сайт всегда отображает актуальную информацию.
Для автоматизации нам понадобится:
- Создать Google Sheets с нужными данными;
- Настроить доступ к Google Sheets API;
- Написать функцию для получения данных и импорта их в WordPress.
Настройка доступа к Google Sheets API
Первым шагом нужно получить доступ к Google Sheets API. Для этого:
- Перейдите в Google Cloud Console и создайте новый проект.
- В разделе API и сервисы включите Google Sheets API.
- Перейдите в «Учетные данные» и создайте OAuth 2.0 Client ID или сервисный аккаунт (рекомендуется для серверной интеграции).
- Скачайте JSON-файл с ключами и сохраните его в безопасном месте.
- Разрешите сервисному аккаунту доступ к вашей таблице Google Sheets (через «Поделиться» по email сервисного аккаунта).
После настройки у вас будет возможность получить данные из таблицы по ее ID.
Пример ID таблицы
В URL таблицы https://docs.google.com/spreadsheets/d/1aBcD_EfgHiJklMnOpQrStUvWxYz/edit ключевым является часть 1aBcD_EfgHiJklMnOpQrStUvWxYz — это и есть ID.
Пример кода для импорта данных из Google Sheets в WordPress
Для работы с API в PHP можно использовать библиотеку Google Client. Ниже пример функции для WPcore, которая получает данные из Google Sheets и создает кастомные записи:
function wpcore_import_google_sheets_data() {
require_once __DIR__ . '/vendor/autoload.php'; // путь к Google API Client
$client = new \Google_Client();
$client->setApplicationName('WPcore Google Sheets Import');
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS_READONLY]);
$client->setAuthConfig(__DIR__ . '/credentials.json'); // путь к вашим ключам
$service = new \Google_Service_Sheets($client);
$spreadsheetId = '1aBcD_EfgHiJklMnOpQrStUvWxYz';
$range = 'Sheet1!A2:C'; // диапазон с данными
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (empty($values)) {
return 'Нет данных для импорта';
}
foreach ($values as $row) {
// Предположим, что в таблице: A - заголовок, B - описание, C - цена
$title = sanitize_text_field($row[0]);
$description = sanitize_textarea_field($row[1]);
$price = floatval($row[2]);
// Проверяем, существует ли уже запись с таким заголовком
$existing = get_page_by_title($title, OBJECT, 'product');
if ($existing) {
// Обновляем запись
wp_update_post([
'ID' => $existing->ID,
'post_content' => $description
]);
update_post_meta($existing->ID, 'price', $price);
} else {
// Создаем новую запись
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $description,
'post_status' => 'publish',
'post_type' => 'product'
]);
if ($post_id) {
update_post_meta($post_id, 'price', $price);
}
}
}
return 'Импорт завершен успешно';
}Эта функция подключается к Google Sheets, получает данные из заданного диапазона, и создаёт или обновляет кастомный тип записи product с метаполем price. Важно: перед использованием создайте тип записи product или замените его на нужный вам.
Автоматизация импорта через Cron
Чтобы импорт выполнялся автоматически, можно добавить задачу в WP-Cron:
function wpcore_schedule_google_sheets_import() {
if (!wp_next_scheduled('wpcore_google_sheets_import_cron')) {
wp_schedule_event(time(), 'hourly', 'wpcore_google_sheets_import_cron');
}
}
add_action('wp', 'wpcore_schedule_google_sheets_import');
add_action('wpcore_google_sheets_import_cron', 'wpcore_import_google_sheets_data');Этот код настроит выполнение функции импорта каждый час. Вы можете изменить интервал, например, на 'twicedaily' или 'daily'.
Рекомендации по безопасности
При работе с Google API важно:
- Хранить JSON с ключами вне публичных директорий сайта;
- Ограничивать права доступа сервисного аккаунта только необходимыми;
- Использовать безопасные функции WordPress для обработки данных (sanitize_text_field, sanitize_textarea_field и т.д.);
- Проверять и логировать ошибки, чтобы вовремя понимать проблемы.
Также для интеграции можно использовать готовые плагины, но собственный код даёт максимальную гибкость и контроль.
Заключение
Автоматический импорт из Google Sheets — мощный инструмент для динамического обновления контента WordPress. С помощью Google Sheets API и PHP можно настроить надежный обмен данными, который упростит работу контент-менеджеров и позволит всегда держать сайт в актуальном состоянии. В качестве дополнения для улучшения работы с импортом рекомендуем рассмотреть использование плагина Clearfy Pro для оптимизации сайта и контроля производительности.