В работе с WordPress часто возникает задача интеграции данных из внешних источников. Одним из популярных вариантов является Google Sheets — удобный и знакомый многим инструмент для ведения таблиц. В этой статье мы подробно разберём, как настроить автоматический импорт данных из Google Sheets в WordPress, используя минимальное количество плагинов и собственный код. Это позволит вам гибко управлять контентом и обновлять данные без лишних трудозатрат.
Почему стоит использовать Google Sheets для импорта данных в WordPress
Google Sheets — это облачный сервис, который позволяет хранить и редактировать таблицы онлайн. Он удобен для совместной работы, автоматического обновления данных и интеграции с разными сервисами через API. Преимущества использования Google Sheets для WordPress:
- Легко обновлять данные без доступа к сайту.
- Поддержка совместной работы и истории изменений.
- Возможность автоматизации и интеграции через Google API.
- Бесплатный и доступный инструмент.
Для WordPress это открывает возможности динамического наполнения сайта — например, каталогов, расписаний, прайс-листов и других структурированных данных.
Подготовка Google Sheets: публикаем и получаем доступ к данным
Для импорта данных из Google Sheets в WordPress нам потребуется получить URL с данными в формате JSON или CSV. Существует несколько способов это сделать:
Публикация таблицы для публичного доступа
1. В Google Sheets откройте нужную таблицу.
2. В меню выберите Файл > Опубликовать в интернете.
3. Выберите нужный лист и формат публикации (CSV или TSV предпочтительнее).
4. Нажмите Опубликовать и скопируйте ссылку.
Эта ссылка станет источником данных для импорта.
Использование Google Sheets API для защищенного доступа
Если вам нужен более гибкий и безопасный способ, стоит использовать Google Sheets API с OAuth 2.0. Однако для простых задач публикация подходит лучше и быстрее.
Практическая реализация импорта данных в WordPress
Рассмотрим пример, как получить CSV из опубликованной Google Sheets и обработать данные в WordPress для создания записей кастомного типа.
Шаг 1. Функция для загрузки CSV из Google Sheets
function wpdesk_import_from_google_sheets($csv_url) {
$response = wp_remote_get($csv_url);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
if (empty($body)) {
return false;
}
$lines = explode("\n", $body);
$data = [];
foreach ($lines as $line) {
$data[] = str_getcsv($line);
}
return $data;
}Эта функция получает CSV по URL и разбивает его на массив строк и столбцов.
Шаг 2. Создание или обновление записей на основе данных
Далее пройдемся по массиву и создадим записи кастомного типа wpdesk_item с метаданными из таблицы.
function wpdesk_process_google_sheets_data($data) {
if (empty($data) || count($data) < 2) {
return;
}
$header = $data[0];
for ($i = 1; $i < count($data); $i++) {
$row = array_combine($header, $data[$i]);
if (!$row) continue;
// Поиск существующей записи по уникальному полю, например 'sku'
$existing = new WP_Query([
'post_type' => 'wpdesk_item',
'meta_query' => [[
'key' => 'sku',
'value' => $row['sku'],
'compare' => '='
]],
'posts_per_page' => 1
]);
if ($existing->have_posts()) {
$post_id = $existing->posts[0]->ID;
// Обновляем запись
wp_update_post([
'ID' => $post_id,
'post_title' => $row['title'],
'post_content' => $row['description'],
]);
} else {
// Создаем новую запись
$post_id = wp_insert_post([
'post_title' => $row['title'],
'post_content' => $row['description'],
'post_status' => 'publish',
'post_type' => 'wpdesk_item'
]);
}
if ($post_id) {
// Обновляем мета
update_post_meta($post_id, 'sku', $row['sku']);
update_post_meta($post_id, 'price', $row['price']);
}
}
}Шаг 3. Запуск импорта через WP-CLI или крон
Для регулярного обновления данных удобнее запускать импорт через WP-CLI или планировщик задач WordPress (WP-Cron). Пример использования WP-CLI:
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('wpdesk_import_google_sheets', function() {
$csv_url = 'https://docs.google.com/spreadsheets/d/e/ВАШ_ИДЕНТИФИКАТОР/pub?output=csv';
$data = wpdesk_import_from_google_sheets($csv_url);
if (!$data) {
WP_CLI::error('Не удалось загрузить данные');
return;
}
wpdesk_process_google_sheets_data($data);
WP_CLI::success('Импорт данных завершён');
});
}Или создайте функцию для планировщика:
function wpdesk_schedule_google_sheets_import() {
if (!wp_next_scheduled('wpdesk_google_sheets_import_hook')) {
wp_schedule_event(time(), 'hourly', 'wpdesk_google_sheets_import_hook');
}
}
add_action('wp', 'wpdesk_schedule_google_sheets_import');
add_action('wpdesk_google_sheets_import_hook', function() {
$csv_url = 'https://docs.google.com/spreadsheets/d/e/ВАШ_ИДЕНТИФИКАТОР/pub?output=csv';
$data = wpdesk_import_from_google_sheets($csv_url);
if ($data) {
wpdesk_process_google_sheets_data($data);
}
});Варианты расширения и интеграции с WPShop
Если вы используете продукты WPShop, например, WPGPT для генерации описаний, можно дополнительно обогащать импортируемые данные автоматически.
Для магазинов на WooCommerce импорт из Google Sheets может быть адаптирован для обновления товаров — цены, наличие, характеристики. Пример такого расширения можно реализовать, изменяя код обработки записей.
Заключение по интеграции Google Sheets и WordPress
Автоматический импорт данных из Google Sheets в WordPress — мощное решение для управления контентом. Оно подходит для различных задач, от каталогов до расписаний и прайс-листов. Используя пример кода, вы можете быстро настроить обновление данных и интеграцию с вашим сайтом.
Не забывайте о безопасности: если данные конфиденциальны, лучше использовать Google API с авторизацией, а не публичную публикацию. Также важно оптимизировать частоту запуска импорта, чтобы не создавать лишнюю нагрузку на сервер.