wpinc.ru wordpress WP Inc

Как создать автоматический импорт данных из Google Sheets в WordPress

Автоматизация импорта данных из Google Sheets в WordPress позволяет поддерживать актуальность информации на сайте без ручного обновления. Это особенно полезно для каталогов, прайс-листов, расписаний и других динамических данных. В этой статье мы подробно рассмотрим, как настроить такой процесс с помощью плагинов и собственного кода.

Почему стоит использовать Google Sheets для хранения данных

Google Sheets — это удобный облачный сервис, позволяющий редактировать таблицы онлайн и совместно с коллегами. Использование его в качестве источника данных для WordPress имеет несколько преимуществ:

  • Доступность и простота редактирования без навыков программирования.
  • Автоматическое сохранение и история изменений.
  • Возможность работы с большими объемами данных и их структурированное хранение.

Для интеграции Google Sheets с WordPress мы можем использовать API Google Sheets или готовые плагины.

Использование готовых плагинов для импорта из Google Sheets

Плагин WP All Import с дополнением для Google Sheets

WP All Import — мощный инструмент для импорта данных в WordPress. С помощью дополнения можно настроить автоматический импорт из Google Sheets.

Основные шаги:

  1. Создайте таблицу в Google Sheets и опубликуйте ее в формате CSV по ссылке.
  2. Установите WP All Import и дополнение Google Sheets Add-on.
  3. Настройте импорт, указав URL CSV-файла из Google Sheets.
  4. Установите расписание для автоматического обновления данных.

Этот способ удобен, если у вас нет желания программировать и нужна быстрая автоматизация.

Плагин Inline Google Spreadsheet Viewer

Если вам достаточно просто отображать таблицу на странице, можно использовать Inline Google Spreadsheet Viewer. Он позволяет встраивать таблицы из Google Sheets на страницы и посты с поддержкой фильтров и сортировки.

Однако он не подходит для сложных манипуляций с данными и интеграции с кастомными типами записей.

Создание собственного решения с использованием Google Sheets API

Для более гибкой интеграции можно написать собственный плагин или добавить код в functions.php вашей темы, который будет обращаться к Google Sheets API и импортировать данные в кастомные типы записей или метаполя.

Шаг 1. Создание и настройка проекта в Google Cloud Console

Для доступа к Google Sheets API необходимо:

  1. Перейти на Google Cloud Console.
  2. Создать новый проект.
  3. Включить API Google Sheets для проекта.
  4. Создать учетные данные — OAuth 2.0 Client ID или API Key (для публичных таблиц).

Для простоты возьмем публичную таблицу и API Key.

Шаг 2. Получение данных из Google Sheets с помощью PHP

В этом примере мы получим данные из таблицы в формате JSON и импортируем их в записи WordPress.

function wpinc_get_google_sheet_data($spreadsheetId, $range, $apiKey) {
    $url = "https://sheets.googleapis.com/v4/spreadsheets/" . $spreadsheetId . "/values/" . $range . "?key=" . $apiKey;
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        return false;
    }
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    if (!isset($data['values'])) {
        return false;
    }
    return $data['values'];
}

Здесь $spreadsheetId — ID вашей таблицы из URL Google Sheets, $range — диапазон ячеек, например 'Sheet1!A1:C100', $apiKey — ваш ключ API.

Шаг 3. Импорт данных в кастомный тип записей

Предположим, у нас есть кастомный тип записей product и мы хотим импортировать из таблицы название и цену.

function wpinc_import_google_sheet_to_products() {
    $spreadsheetId = 'ВАШ_SPREADSHEET_ID';
    $range = 'Sheet1!A2:B100';
    $apiKey = 'ВАШ_API_KEY';

    $rows = wpinc_get_google_sheet_data($spreadsheetId, $range, $apiKey);
    if (!$rows) {
        return;
    }

    foreach ($rows as $row) {
        $title = sanitize_text_field($row[0]);
        $price = floatval($row[1]);

        // Проверяем, существует ли уже запись с таким названием
        $existing = get_posts(array(
            'post_type' => 'product',
            'title' => $title,
            'post_status' => 'publish',
            'numberposts' => 1
        ));

        if ($existing) {
            $post_id = $existing[0]->ID;
            wp_update_post(array('ID' => $post_id, 'post_title' => $title));
        } else {
            $post_id = wp_insert_post(array(
                'post_type' => 'product',
                'post_title' => $title,
                'post_status' => 'publish'
            ));
        }

        if ($post_id) {
            update_post_meta($post_id, 'price', $price);
        }
    }
}

Эту функцию можно запускать вручную или через крон для регулярного обновления данных.

Автоматизация обновления с помощью WP-Cron

Чтобы импорт происходил автоматически, добавим задачу в WP-Cron:

function wpinc_schedule_google_sheets_import() {
    if (!wp_next_scheduled('wpinc_google_sheets_import_hook')) {
        wp_schedule_event(time(), 'hourly', 'wpinc_google_sheets_import_hook');
    }
}
add_action('wp', 'wpinc_schedule_google_sheets_import');

add_action('wpinc_google_sheets_import_hook', 'wpinc_import_google_sheet_to_products');

Это запустит импорт данных каждый час. При необходимости можно изменить период.

Обработка ошибок и логирование

При работе с API важно обрабатывать ошибки. В нашем коде стоит добавить проверку результата запроса и логировать ошибки в файл или системный лог WordPress.

Например, можно использовать функцию error_log() для записи ошибок.

Заключение

Автоматический импорт данных из Google Sheets в WordPress — мощный инструмент для динамического обновления контента. Выбор метода зависит от ваших задач и навыков: готовые плагины подойдут для простых случаев, а собственный код — для сложных интеграций. Пример кода выше поможет начать создавать собственные решения для импорта и обновления данных.

Для расширенных возможностей оптимизации и управления импортом обратите внимание на плагины, доступные на WPSHOP.ru.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙