Использование Google Sheets для хранения и редактирования данных — популярное решение для многих проектов. Но как автоматически импортировать эти данные в WordPress, чтобы они всегда были актуальны? В этой статье подробно рассмотрим, как настроить автоматический импорт данных из Google Sheets в WordPress, используя PHP, REST API и плагин WP-Cron для автоматизации процесса.
Почему стоит автоматизировать импорт из Google Sheets в WordPress
Google Sheets удобен для совместной работы и редактирования данных, будь то каталоги товаров, расписания, списки клиентов или любые другие данные. Автоматизация импорта позволяет:
- Избавиться от ручного копирования и ошибок;
- Обеспечить актуальность контента на сайте;
- Упростить работу с большими объемами данных;
- Сэкономить время на обновления.
Для решения этой задачи мы рассмотрим пример, где данные из Google Sheets будут импортироваться и сохраняться как записи кастомного типа в WordPress.
Подготовка Google Sheets и настройка доступа к API
Для начала необходимо подготовить таблицу и получить доступ к её данным через API.
1. Подготовка таблицы
Убедитесь, что в таблице есть заголовки столбцов, которые будут использоваться как ключи. Например:
- name — название;
- description — описание;
- price — цена.
2. Публикация таблицы или настройка доступа
Для простого доступа можно опубликовать таблицу в формате CSV или JSON:
- В Google Sheets выберите Файл > Опубликовать в интернете;
- Выберите формат CSV или JSON (через сторонние сервисы для JSON);
- Получите ссылку для доступа.
Для более защищенного варианта используйте Google Sheets API с OAuth 2.0, но это требует регистрации приложения в Google Cloud Console и настройки авторизации.
Пример кода для импорта данных из CSV Google Sheets
Рассмотрим простой пример, где мы получаем CSV и создаем записи кастомного типа product.
function wpteam_import_google_sheets_data() {
$csv_url = 'https://docs.google.com/spreadsheets/d/e/ВАШ_ИД_ПУБЛИЧНОЙ_ТАБЛИЦЫ/pub?output=csv';
$response = wp_remote_get($csv_url);
if (is_wp_error($response)) {
return;
}
$csv_data = wp_remote_retrieve_body($response);
$lines = explode("\n", $csv_data);
$headers = str_getcsv(array_shift($lines));
foreach ($lines as $line) {
if (empty(trim($line))) continue;
$row = str_getcsv($line);
$data = array_combine($headers, $row);
// Проверяем, есть ли уже запись с таким названием
$existing = get_page_by_title($data['name'], OBJECT, 'product');
if ($existing) {
// Обновляем запись
wp_update_post(array(
'ID' => $existing->ID,
'post_content' => $data['description'],
));
update_post_meta($existing->ID, 'price', $data['price']);
} else {
// Создаем новую запись
$post_id = wp_insert_post(array(
'post_title' => $data['name'],
'post_content' => $data['description'],
'post_status' => 'publish',
'post_type' => 'product',
));
if (!is_wp_error($post_id)) {
update_post_meta($post_id, 'price', $data['price']);
}
}
}
}
// Регистрируем кастомный тип записи
function wpteam_register_product_cpt() {
register_post_type('product', array(
'labels' => array(
'name' => 'Товары',
'singular_name' => 'Товар'
),
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
));
}
add_action('init', 'wpteam_register_product_cpt');Автоматизация импорта через WP-Cron
Чтобы импорт запускался автоматически, например, раз в час, настроим WP-Cron.
function wpteam_schedule_import() {
if (!wp_next_scheduled('wpteam_import_event')) {
wp_schedule_event(time(), 'hourly', 'wpteam_import_event');
}
}
add_action('wp', 'wpteam_schedule_import');
add_action('wpteam_import_event', 'wpteam_import_google_sheets_data');Теперь WordPress будет запускать функцию импорта каждый час, обновляя данные из Google Sheets.
Дополнительные рекомендации и безопасность
Для улучшения решения:
- Используйте Google Sheets API с авторизацией для приватных данных;
- Добавьте обработку ошибок и логирование для отладки;
- Оптимизируйте обновление данных, чтобы не создавать дубликатов;
- Кэшируйте результаты, если объем данных большой;
- Используйте плагин Clearfy Pro для управления WP-Cron и оптимизации сайта.
Выводы
Автоматический импорт данных из Google Sheets в WordPress — мощный инструмент для поддержания актуального контента без лишних усилий. С помощью простого PHP кода, WP-Cron и грамотной настройки таблицы вы сможете легко интегрировать данные из таблиц Google в ваш сайт. Такой подход отлично подойдет для каталогов, расписаний и других динамических данных.