Интеграция Google Sheets с WordPress — востребованный способ автоматизировать обновление контента, особенно если данные часто меняются и их удобно редактировать в таблицах. В этой статье разберём, как настроить автоматический импорт данных из Google Sheets в WordPress с помощью собственного кода и без сторонних сервисов.
Почему выгодно использовать Google Sheets для управления контентом WordPress
Google Sheets — это универсальный инструмент для совместной работы с таблицами, который позволяет легко обновлять данные в режиме реального времени. Если в WordPress нужно регулярно обновлять прайсы, списки мероприятий, каталоги или любые табличные данные, то использование Google Sheets упрощает процесс и уменьшает вероятность ошибок.
Основные преимущества:
- Обновления в таблице мгновенно видны в WordPress без ручного копирования.
- Несколько пользователей могут одновременно редактировать данные.
- Можно использовать стандартные формулы и функции Google Sheets для расчётов.
Настройка Google Sheets для импорта
Первым делом нужно подготовить таблицу для публичного или ограниченного доступа, чтобы WordPress мог получить к ней данные.
1. Сделайте таблицу доступной для чтения
В Google Sheets откройте Файл > Опубликовать в интернете. Выберите нужный лист и нажмите «Опубликовать». Это создаст публичный URL для доступа к данным.
2. Получите ссылку для экспорта в формате CSV
Для удобного парсинга в WordPress лучше получить данные в CSV. Формат ссылки для экспорта Google Sheets выглядит так:
https://docs.google.com/spreadsheets/d/ID_ТАБЛИЦЫ/export?format=csv&id=ID_ТАБЛИЦЫ&gid=ID_ЛИСТАГде ID_ТАБЛИЦЫ — это уникальный идентификатор документа, а ID_ЛИСТА — идентификатор листа (можно посмотреть в URL).
Создание функции автоматического импорта данных в WordPress
Далее создадим функцию wpcodex_import_google_sheets(), которая будет скачивать CSV, парсить его и обновлять содержимое сайта.
Для примера импортируем данные в кастомный тип постов product, где каждая строка таблицы — отдельный товар.
Пример функции импорта
function wpcodex_import_google_sheets() {
$url = 'https://docs.google.com/spreadsheets/d/ID_ТАБЛИЦЫ/export?format=csv&id=ID_ТАБЛИЦЫ&gid=ID_ЛИСТА';
$response = wp_remote_get($url);
if (is_wp_error($response)) {
error_log('Ошибка загрузки CSV: ' . $response->get_error_message());
return;
}
$csv = wp_remote_retrieve_body($response);
if (empty($csv)) {
error_log('Пустой CSV-файл');
return;
}
$rows = str_getcsv($csv, "\n");
$header = null;
foreach ($rows as $row) {
$data = str_getcsv($row, ',');
if (!$header) {
$header = $data; // первая строка - заголовки
continue;
}
$item = array_combine($header, $data);
// Проверка наличия обязательных полей
if (empty($item['ID']) || empty($item['title'])) {
continue;
}
// Проверяем, есть ли пост с таким ID
$existing_post = get_post(intval($item['ID']));
$post_data = array(
'ID' => $existing_post ? intval($item['ID']) : 0,
'post_title' => sanitize_text_field($item['title']),
'post_type' => 'product',
'post_status' => 'publish',
'post_content' => sanitize_textarea_field($item['description']),
);
if ($existing_post) {
wp_update_post($post_data);
} else {
$new_post_id = wp_insert_post($post_data);
if (!$new_post_id) {
error_log('Ошибка создания поста для товара: ' . $item['title']);
continue;
}
}
// Обновляем мета-поля товара
update_post_meta($post_data['ID'] ?: $new_post_id, 'price', floatval($item['price']));
update_post_meta($post_data['ID'] ?: $new_post_id, 'sku', sanitize_text_field($item['sku']));
}
}В этой функции мы:
- Получаем CSV по публичному URL.
- Парсим строки и заголовки.
- Обновляем или создаём посты типа
product. - Обновляем мета-поля, например цену и артикул.
Автоматизация импорта с помощью WP-Cron
Чтобы импорт происходил автоматически, можно задать задачу по расписанию через WP-Cron.
Добавление интервала и задания
function wpcodex_add_cron_interval($schedules) {
$schedules['every_five_minutes'] = array(
'interval' => 300,
'display' => 'Каждые 5 минут'
);
return $schedules;
}
add_filter('cron_schedules', 'wpcodex_add_cron_interval');
function wpcodex_schedule_import() {
if (!wp_next_scheduled('wpcodex_google_sheets_import')) {
wp_schedule_event(time(), 'every_five_minutes', 'wpcodex_google_sheets_import');
}
}
add_action('wp', 'wpcodex_schedule_import');
add_action('wpcodex_google_sheets_import', 'wpcodex_import_google_sheets');Теперь функция wpcodex_import_google_sheets() будет запускаться каждые 5 минут, автоматически обновляя данные из Google Sheets.
Рекомендации по безопасности и производительности
При работе с внешними данными важно учитывать несколько моментов:
- Публикуйте Google Sheets с ограниченным доступом или используйте OAuth, если данные конфиденциальны.
- Кешируйте результаты или используйте WP-Cron с разумным интервалом, чтобы не перегружать сервер.
- Проверяйте и фильтруйте все входящие данные для предотвращения XSS и инъекций.
- Используйте транзакции и логи, чтобы отслеживать успешность импорта и ошибки.
Использование плагина для упрощения задачи
Если хочется готовое решение без кода, можно рассмотреть плагин WPImport Google Sheets от WpShop, который предоставляет удобный интерфейс для настройки импорта таблиц в WordPress, поддерживает кастомные типы постов и мета-поля.
Плагин позволит сэкономить время на разработку и легко управлять импортом через админку.
Заключение
Автоматический импорт из Google Sheets — отличный способ синхронизировать данные для WordPress-проекта. С помощью приведённого кода и рекомендаций вы сможете настроить надёжное обновление контента, минимизируя ручной труд. При необходимости расширения функционала стоит обратить внимание на готовые плагины, которые интегрируются с WordPress и обеспечивают стабильность работы.