Автоматизация наполнения контентом — важная задача для многих сайтов на WordPress. Если у вас есть таблица в Google Sheets с готовыми статьями или данными, можно настроить автоматический импорт этих данных в виде постов WordPress. Это особенно удобно для сайтов с большим объемом обновлений или агрегаторов контента.
Почему автоматический импорт из Google Sheets полезен для WordPress
Google Sheets — удобный инструмент для совместной работы с контентом. Редакторы и контент-менеджеры могут вносить правки, а разработчик настраивает синхронизацию с сайтом. Это устраняет необходимость ручного копирования и вставки, снижает ошибки и ускоряет процесс публикации.
Ключевые преимущества:
- Централизованное управление контентом в Google Sheets
- Автоматическое создание или обновление постов в WordPress
- Гибкость в форматировании и добавлении метаданных
- Экономия времени и ресурсов
Обзор плагинов для импорта из Google Sheets
Существуют плагины, облегчающие импорт, но часто они платные или слишком универсальные. Для точечного решения можно использовать плагины с API Google и кастомным кодом.
Рассмотрим три варианта:
1. WP All Import + Google Sheets Add-on
Платное решение с мощным функционалом и визуальным редактором. Позволяет настроить импорт с регулярностью, поддерживает сложные поля и пользовательские типы записей.
2. Google Sheets API + пользовательский плагин
Самый гибкий способ — написать собственный скрипт, который через Google Sheets API получает данные и создает посты. Это требует навыков PHP и работы с API.
3. Использование плагина WPRemark для обработки комментариев и пользовательского контента
Хотя WPRemark больше для комментариев, его можно адаптировать для частичной автоматизации, например, для импорта пользовательских отзывов из Google Sheets.
Как настроить автоматический импорт через Google Sheets API и собственный плагин
Рассмотрим пример создания базового плагина для импорта постов из Google Sheets с использованием Google Sheets API v4.
Шаг 1. Создайте проект в Google Cloud Console и получите ключ API
Перейдите в Google Cloud Console, создайте проект, активируйте API Google Sheets и получите credentials JSON для доступа.
Шаг 2. Подготовьте таблицу Google Sheets
Организуйте таблицу так, чтобы каждая строка представляла отдельный пост, например:
- Колонка A: Заголовок
- Колонка B: Содержание
- Колонка C: Категория
- Колонка D: Теги (через запятую)
Шаг 3. Создайте плагин WordPress для импорта
Создайте папку wp-content/plugins/wordpresses-google-sheets-importer и файл wordpresses-google-sheets-importer.php с таким кодом:
<?php
/**
* Plugin Name: WordPresses Google Sheets Importer
* Description: Импорт постов из Google Sheets
* Version: 1.0
* Author: WordPresses.ru
*/
add_action('admin_menu', 'wordpresses_add_importer_page');
function wordpresses_add_importer_page() {
add_submenu_page('tools.php', 'Импорт из Google Sheets', 'Импорт из Sheets', 'manage_options', 'wordpresses-google-sheets-importer', 'wordpresses_importer_page');
}
function wordpresses_importer_page() {
if (!current_user_can('manage_options')) {
wp_die('Доступ запрещен');
}
if (isset($_POST['import'])) {
wordpresses_google_sheets_import();
}
echo '<div class="wrap"><h1>Импорт постов из Google Sheets</h1>';
echo '<form method="post"><input type="submit" name="import" class="button button-primary" value="Запустить импорт" /></form></div>';
}
function wordpresses_google_sheets_import() {
$api_key = 'ВАШ_API_КЛЮЧ';
$spreadsheet_id = 'ID_ВАШЕЙ_ТАБЛИЦЫ';
$range = 'Лист1!A2:D'; // диапазон без заголовков
$url = "https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheet_id}/values/{$range}?key={$api_key}";
$response = wp_remote_get($url);
if (is_wp_error($response)) {
echo '<p style="color:red;">Ошибка запроса к Google Sheets: ' . esc_html($response->get_error_message()) . '</p>';
return;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data['values'])) {
echo '<p>Нет данных для импорта.</p>';
return;
}
$imported = 0;
foreach ($data['values'] as $row) {
$title = isset($row[0]) ? sanitize_text_field($row[0]) : '';
$content = isset($row[1]) ? wp_kses_post($row[1]) : '';
$category_name = isset($row[2]) ? sanitize_text_field($row[2]) : '';
$tags = isset($row[3]) ? explode(',', $row[3]) : [];
if (!$title || !$content) {
continue; // пропускаем пустые строки
}
// Получаем ID категории или создаем
$category_id = 0;
if ($category_name) {
$cat = get_term_by('name', $category_name, 'category');
if (!$cat) {
$cat = wp_insert_term($category_name, 'category');
}
$category_id = is_array($cat) && !is_wp_error($cat) ? $cat['term_id'] : 0;
}
// Создаем пост
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_category'=> $category_id ? [$category_id] : [],
]);
if (is_wp_error($post_id)) {
continue;
}
// Добавляем теги
if ($tags) {
$tags = array_map('sanitize_text_field', $tags);
wp_set_post_tags($post_id, $tags);
}
$imported++;
}
echo '<p>Импортировано постов: ' . $imported . '</p>';
}
?>Шаг 4. Запуск импорта через админку
После активации плагина в меню "Инструменты" появится пункт "Импорт из Google Sheets". По кнопке "Запустить импорт" данные из таблицы будут загружены и созданы новые посты.
Дополнительные советы и расширения импорта
Обработка обновлений и дубликатов
Для предотвращения дублирования можно сохранять в мета-поле ID строки таблицы или уникальный идентификатор и перед импортом проверять, существует ли уже такой пост.
Использование WP-Cron для регулярного обновления
Чтобы импорт происходил автоматически, добавьте wp_schedule_event с нужным интервалом и вызовом функции импорта. Так сайт будет постоянно обновляться без вашего участия.
Импорт пользовательских полей и кастомных типов записей
Если в таблице есть дополнительные данные, можно расширить функцию импорта, используя update_post_meta для добавления метаданных или wp_insert_post с параметом 'post_type' для создания кастомных типов записей.
Заключение
Автоматический импорт постов из Google Sheets в WordPress — практичное решение для упрощения работы с контентом. Используя Google Sheets API и собственный плагин, можно гибко настраивать процесс, расширять функционал и экономить время. Если хотите расширить возможности, обратите внимание на готовые решения, например, WPRemark, который помогает автоматизировать обработку пользовательского контента.