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

Автоматический импорт отзывов – популярная задача для сайтов, где необходимо регулярно обновлять раздел отзывов клиентов без ручного ввода. В WordPress это можно реализовать несколькими способами: через подключение к внешнему API, импорт CSV-файлов или парсинг данных с других ресурсов. В этой статье рассмотрим, как сделать автоматический импорт отзывов с примерами плагинов и кодом, который можно адаптировать под свои задачи.

Почему важен автоматический импорт отзывов в WordPress

Отзывы – важная часть сайта, повышающая доверие пользователей и улучшая SEO. Вручную добавлять отзывы неудобно и долго, особенно при большом объеме или частой смене данных. Автоматизация позволяет:

  • Экономить время на обновлении контента.
  • Своевременно отображать свежие отзывы.
  • Снижать человеческие ошибки при вводе.
  • Интегрировать отзывы с внешними системами (например, CRM, маркетплейсы).

Далее рассмотрим популярные методы реализации.

Импорт отзывов с помощью плагинов

Плагин WP All Import для отзывов

Плагин WP All Import – универсальный инструмент для импорта данных из CSV или XML в любой тип записи, включая отзывы. Его преимущество – гибкость настройки, возможность расписать маппинг полей и автоматизировать импорт расписанием через CRON.

Пример базовой настройки:

  • Создайте CSV с полями: Имя пользователя, Отзыв, Оценка, Дата.
  • Настройте импорт в тип записи «Отзывы» (custom post type) или комментарии.
  • Установите расписание для регулярного обновления.

Это решение подойдет, если отзывы собираются из внешних файлов.

Плагин WP Review Pro и интеграция с внешними источниками

Если вы используете WP Review Pro для вывода отзывов с рейтингами, можно подключить внешний API и записывать отзывы в его формат. Для этого понадобится создать скрипт, который через wp_remote_get() получает JSON, парсит отзывы и добавляет их в базу.

Пример кода для автоматического импорта отзывов из JSON API

Рассмотрим пример функции для импорта отзывов с внешнего API в кастомный тип записи 'wptask_review'.

function wptask_import_reviews_from_api() {
    $response = wp_remote_get('https://example.com/api/reviews');
    if (is_wp_error($response)) {
        error_log('Ошибка запроса отзывов');
        return;
    }
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    if (empty($data) || !is_array($data)) {
        error_log('Пустой или неверный формат данных');
        return;
    }
    foreach ($data as $review) {
        // Проверяем, есть ли уже отзыв с таким ID
        $existing = get_posts(array(
            'post_type' => 'wptask_review',
            'meta_key' => 'external_review_id',
            'meta_value' => $review['id'],
            'posts_per_page' => 1
        ));
        if ($existing) {
            continue; // Отзыв уже импортирован
        }
        // Добавляем новый отзыв
        $post_id = wp_insert_post(array(
            'post_title' => sanitize_text_field($review['author']),
            'post_content' => sanitize_textarea_field($review['content']),
            'post_type' => 'wptask_review',
            'post_status' => 'publish'
        ));
        if ($post_id) {
            update_post_meta($post_id, 'external_review_id', intval($review['id']));
            update_post_meta($post_id, 'review_rating', floatval($review['rating']));
            update_post_meta($post_id, 'review_date', sanitize_text_field($review['date']));
        }
    }
}
// Запускаем импорт раз в сутки
if (!wp_next_scheduled('wptask_daily_import_reviews')) {
    wp_schedule_event(time(), 'daily', 'wptask_daily_import_reviews');
}
add_action('wptask_daily_import_reviews', 'wptask_import_reviews_from_api');

Этот пример можно адаптировать под свой API и поля. Используйте кастомный тип записи для удобного управления отзывами в админке.

Импорт отзывов из CSV с использованием WP-CLI

Для опытных пользователей удобен импорт через WP-CLI. Например, скрипт на PHP для импорта отзывов из CSV:

function wptask_cli_import_reviews($csv_file) {
    if (!file_exists($csv_file)) {
        WP_CLI::error('Файл не найден');
    }
    $handle = fopen($csv_file, 'r');
    if (!$handle) {
        WP_CLI::error('Не удалось открыть файл');
    }
    $headers = fgetcsv($handle);
    while (($row = fgetcsv($handle)) !== false) {
        $data = array_combine($headers, $row);
        $post_id = wp_insert_post(array(
            'post_title' => sanitize_text_field($data['author']),
            'post_content' => sanitize_textarea_field($data['content']),
            'post_type' => 'wptask_review',
            'post_status' => 'publish'
        ));
        if ($post_id) {
            update_post_meta($post_id, 'review_rating', floatval($data['rating']));
            update_post_meta($post_id, 'review_date', sanitize_text_field($data['date']));
        }
    }
    fclose($handle);
    WP_CLI::success('Импорт завершен');
}
if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wptask import_reviews', function($args) {
        wptask_cli_import_reviews($args[0]);
    });
}

Запускайте команду из терминала: wp wptask import_reviews путь_к_файлу.csv

Рекомендации по безопасности и производительности

При импорте отзывов важно учитывать несколько факторов:

  • Проверять и фильтровать все входящие данные, чтобы избежать XSS и SQL-инъекций.
  • Обрабатывать большие объемы данных партиями, чтобы не перегружать сервер.
  • Кэшировать результаты и использовать транзиенты для оптимизации.
  • Использовать CRON-задания для планового запуска импорта.
  • Логировать ошибки и результаты для отладки.

Пример использования транзиентов для кеширования ответа API:

function wptask_get_reviews_cache() {
    $cache_key = 'wptask_reviews_cache';
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }
    $response = wp_remote_get('https://example.com/api/reviews');
    if (is_wp_error($response)) {
        return false;
    }
    $body = wp_remote_retrieve_body($response);
    set_transient($cache_key, $body, HOUR_IN_SECONDS);
    return $body;
}
Автоматический импорт пользователей в WordPress через CSV с примером кода
18.01.2026
Как создать собственный shortcode в WordPress с примером кода
05.11.2025
Автоматическое удаление неиспользуемых таксономий в WordPress
01.04.2026
Как отключить или полностью удалить редактор Gutenberg в WordPress
13.01.2026
WooCommerce: как автоматически удалять неоплаченные заказы через cron и код
26.05.2026