Часто владельцы сайтов на WordPress сталкиваются с задачей автоматического обновления контента из внешних источников. Если вы ведёте контент-план или базу данных постов в Google Sheets, можно настроить автоматический импорт данных из таблиц прямо в WordPress. Это позволит упростить управление контентом и сэкономить время на ручном добавлении записей.
Зачем использовать Google Sheets для хранения контента
Google Sheets — удобный инструмент для совместной работы с текстами, заголовками, категориями и метаданными. Вы можете делегировать наполнение таблицы нескольким редакторам, а затем автоматически синхронизировать данные с сайтом. Такой подход особенно полезен, если контент обновляется часто и требует предварительного согласования.
Преимущества:
- Лёгкость редактирования и совместная работа
- Автоматизация импорта через API Google Sheets
- Гибкость формата и структуры данных
Подготовка Google Sheets и получение доступа к API
Для начала нужно создать таблицу в Google Sheets с нужными столбцами, например:
- post_title — заголовок поста
- post_content — содержание
- post_category — категория
- post_status — статус публикации (publish, draft и т.д.)
Далее необходимо получить доступ к Google Sheets API:
- Перейдите в Google Cloud Console и создайте новый проект.
- Включите API Google Sheets для проекта.
- Создайте сервисный аккаунт и скачайте JSON-файл с ключами.
- Поделитесь таблицей Google Sheets с email адресом сервисного аккаунта с правами на просмотр.
Пример кода для импорта данных из Google Sheets в WordPress
Для работы с Google Sheets API в PHP можно использовать библиотеку Google API Client. Ниже пример функции wp3_import_posts_from_sheets(), которая получает данные из таблицы и создаёт посты в WordPress:
require_once __DIR__ . '/vendor/autoload.php'; // Подключение Google API Client
function wp3_import_posts_from_sheets() {
$client = new Google_Client();
$client->setApplicationName('WP3 Google Sheets Import');
$client->setScopes(Google_Service_Sheets::SPREADSHEETS_READONLY);
$client->setAuthConfig(__DIR__ . '/credentials.json');
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'ВАШ_ID_ТАБЛИЦЫ';
$range = 'Лист1!A2:D'; // Диапазон с данными
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (empty($values)) {
error_log('Нет данных для импорта');
return;
}
foreach ($values as $row) {
$post_title = sanitize_text_field($row[0] ?? '');
$post_content = sanitize_textarea_field($row[1] ?? '');
$post_category = sanitize_text_field($row[2] ?? '');
$post_status = sanitize_text_field($row[3] ?? 'draft');
if (!$post_title || !$post_content) {
continue;
}
// Проверка на дубликаты по заголовку
$existing = get_page_by_title($post_title, OBJECT, 'post');
if ($existing) {
continue;
}
$post_id = wp_insert_post([
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => $post_status,
'post_category' => [], // Категории добавим отдельно
]);
if ($post_id && $post_category) {
$term = term_exists($post_category, 'category');
if (!$term) {
$term = wp_insert_term($post_category, 'category');
}
if (!is_wp_error($term)) {
wp_set_post_categories($post_id, [$term['term_id'] ?? $term['term_taxonomy_id']]);
}
}
}
}
// Для автоматизации можно вызвать функцию по cron или вручную
// add_action('wp_loaded', 'wp3_import_posts_from_sheets');Как автоматизировать импорт с помощью WP Cron
Чтобы импорт происходил регулярно, можно запланировать событие WP Cron. Для этого добавьте код регистрации задачи и её обработки в functions.php вашей темы или в плагин:
function wp3_schedule_sheets_import() {
if (!wp_next_scheduled('wp3_import_posts_event')) {
wp_schedule_event(time(), 'hourly', 'wp3_import_posts_event');
}
}
add_action('wp', 'wp3_schedule_sheets_import');
add_action('wp3_import_posts_event', 'wp3_import_posts_from_sheets');Этот код запустит импорт постов из Google Sheets каждый час. Интервал можно настроить, добавив кастомный интервал через фильтр cron_schedules.
Полезные плагины для интеграции с Google Sheets
Если не хотите писать код самостоятельно, рекомендуем попробовать плагины, которые облегчают интеграцию:
- OmniVideo — для импорта видео из таблиц с поддержкой кастомных полей.
- WPRemark — модуль для автоматизации работы с комментариями и постами.
Советы по безопасности и оптимизации
При работе с Google API важно хранить ключи сервиса в защищённом месте вне публичного доступа. Не забывайте использовать санитайзеры WordPress для обработки входящих данных, чтобы избежать уязвимостей.
Также лучше настроить логирование ошибок импорта и уведомления, чтобы вовремя отслеживать сбои. Если количество постов большое, разбивайте импорт на порции, чтобы избежать превышения лимитов памяти и времени выполнения скрипта.