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

Автоматическое создание и управление отзывами о курсах — важный элемент образовательных сайтов на WordPress. Это помогает повысить доверие пользователей и облегчить администрирование контента. В этой статье мы подробно разберём, как автоматизировать процесс создания отзывов с помощью пользовательского кода и готовых плагинов, а также как интегрировать их с типом записи «Курсы».

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

Ручной ввод отзывов занимает много времени, особенно если курсов много и отзывы обновляются регулярно. Автоматизация позволяет:

  • Экономить время администрации;
  • Обеспечивать регулярное обновление отзывов;
  • Улучшать UX за счёт динамического отображения и сортировки;
  • Уменьшать вероятность ошибок и потери данных.

Также автоматизация помогает интегрировать отзывы с внешними источниками — например, импортировать их с платформ обучения или соцсетей.

Создание пользовательского типа записи для отзывов и связь с курсами

Если на сайте используется собственный тип записи «Курсы», логично создать отдельный тип записи «Отзывы» и связать их между собой. Это позволит гибко управлять отзывами и отображать их рядом с курсами.

Добавим в functions.php темы следующий код для регистрации типа записи wpfreecourses_create_review_post_type:

function wpfreecourses_create_review_post_type() {
    $labels = array(
        'name' => 'Отзывы',
        'singular_name' => 'Отзыв',
        'add_new' => 'Добавить отзыв',
        'add_new_item' => 'Добавить новый отзыв',
        'edit_item' => 'Редактировать отзыв',
        'new_item' => 'Новый отзыв',
        'view_item' => 'Просмотреть отзыв',
        'search_items' => 'Поиск отзывов',
        'not_found' => 'Отзывы не найдены',
        'not_found_in_trash' => 'В корзине отзывы не найдены',
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => false,
        'supports' => array('title', 'editor', 'author'),
        'show_in_rest' => true,
    );
    register_post_type('wpf_review', $args);
}
add_action('init', 'wpfreecourses_create_review_post_type');

Далее добавим связь между курсом и отзывом с помощью пользовательского поля — meta key _wpf_review_course_id. При создании отзыва в это поле записывается ID курса.

Автоматическое создание отзыва при добавлении курса

Часто требуется, чтобы сразу после добавления курса создавался начальный отзыв (например, от администратора). Для этого используем хук save_post:

function wpfreecourses_create_initial_review($post_id, $post, $update) {
    if ($post->post_type !== 'wpf_course' || $update) return;
    // Проверяем, есть ли уже отзыв для курса
    $existing = new WP_Query(array(
        'post_type' => 'wpf_review',
        'meta_key' => '_wpf_review_course_id',
        'meta_value' => $post_id,
        'posts_per_page' => 1
    ));
    if ($existing->have_posts()) return;
    // Создаём отзыв
    $review_post = array(
        'post_title' => 'Начальный отзыв',
        'post_content' => 'Этот курс отличный! Рекомендуем.',
        'post_status' => 'publish',
        'post_type' => 'wpf_review',
        'meta_input' => array(
            '_wpf_review_course_id' => $post_id
        ),
    );
    wp_insert_post($review_post);
}
add_action('save_post', 'wpfreecourses_create_initial_review', 10, 3);

Отображение отзывов на странице курса с фильтрацией и пагинацией

Чтобы выводить отзывы, связанные с конкретным курсом, создадим функцию-шорткод wpfreecourses_show_course_reviews:

function wpfreecourses_show_course_reviews($atts) {
    $atts = shortcode_atts(array(
        'course_id' => 0,
        'posts_per_page' => 5,
        'paged' => 1
    ), $atts);
    if (!$atts['course_id']) return 'Курс не указан.';

    $args = array(
        'post_type' => 'wpf_review',
        'meta_key' => '_wpf_review_course_id',
        'meta_value' => $atts['course_id'],
        'posts_per_page' => intval($atts['posts_per_page']),
        'paged' => intval($atts['paged']),
        'orderby' => 'date',
        'order' => 'DESC',
    );
    $query = new WP_Query($args);
    if (!$query->have_posts()) return 'Отзывов пока нет.';

    $output = '<div class="wpf-course-reviews">';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<div class="wpf-review-item">';
        $output .= '<h4>' . get_the_title() . '</h4>';
        $output .= '<div class="wpf-review-content">' . get_the_content() . '</div>';
        $output .= '<div class="wpf-review-date">' . get_the_date() . '</div>';
        $output .= '</div>';
    }
    $output .= '</div>';
    // Добавим простую пагинацию
    $big = 999999999;
    $pagination = paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => max(1, $atts['paged']),
        'total' => $query->max_num_pages,
        'type' => 'list'
    ));
    if ($pagination) {
        $output .= '<nav class="wpf-reviews-pagination">' . $pagination . '</nav>';
    }
    wp_reset_postdata();
    return $output;
}
add_shortcode('wpf_course_reviews', 'wpfreecourses_show_course_reviews');

Этот шорткод можно вставлять в шаблон страницы курса или в контент с передачей ID курса: [wpf_course_reviews course_id="123"].

Использование плагинов для автоматизации отзывов

Если хочется упростить задачу, можно использовать готовые плагины, которые поддерживают кастомные типы записей и автоматизацию:

  • WP Review Pro — расширенный плагин с возможностью добавления отзывов с рейтингами, поддержкой кастомных типов записей и шаблонов вывода.
  • WPRemark — плагин для модерации и автоматизации отзывов, который можно настроить для автоматического создания отзывов и их фильтрации.
  • Site Reviews — бесплатный плагин с возможностью создавать отзывы, управлять ими и выводить через шорткоды.

При выборе плагина учитывайте, насколько он совместим с вашим типом записи «Курсы» и возможностью автоматизации.

Автоматический импорт отзывов из внешних источников с помощью REST API

Иногда отзывы могут поступать из внешних сервисов или образовательных платформ. Для автоматизации импорта можно написать WP-CLI команду или использовать WP Cron с REST API.

Пример функции для импорта отзывов из внешнего JSON API:

function wpfreecourses_import_reviews_from_api() {
    $response = wp_remote_get('https://example.com/api/course-reviews');
    if (is_wp_error($response)) return;
    $reviews = json_decode(wp_remote_retrieve_body($response), true);
    if (empty($reviews)) return;

    foreach ($reviews as $review) {
        // Проверяем, есть ли уже такой отзыв
        $existing = new WP_Query(array(
            'post_type' => 'wpf_review',
            'meta_query' => array(
                array(
                    'key' => '_external_review_id',
                    'value' => $review['id'],
                    'compare' => '='
                )
            ),
            'posts_per_page' => 1
        ));
        if ($existing->have_posts()) continue;

        // Создаём отзыв
        wp_insert_post(array(
            'post_title' => sanitize_text_field($review['title']),
            'post_content' => wp_kses_post($review['content']),
            'post_status' => 'publish',
            'post_type' => 'wpf_review',
            'meta_input' => array(
                '_wpf_review_course_id' => intval($review['course_id']),
                '_external_review_id' => sanitize_text_field($review['id'])
            ),
        ));
    }
}

Такую функцию можно запускать по крону или через WP-CLI, чтобы держать отзывы в актуальном состоянии.

Заключение по автоматизации отзывов курсов в WordPress

Автоматизация отзывов — мощный инструмент для образовательных сайтов на WordPress. Создание пользовательского типа записи, связь с курсами, вывод через шорткод и интеграция с внешними источниками значительно упрощают процесс управления отзывами. Для ускорения можно использовать специализированные плагины, например, WPRemark.

Используйте описанные методы и код, чтобы внедрить эффективную систему отзывов, повышающую доверие к вашим курсам и улучшая пользовательский опыт.

WooCommerce: автоматическое удаление неактивных заказов по срокам
04.06.2026
Автоматическое отображение подсказок в WordPress с помощью пользовательского кода и плагинов
22.01.2026
WooCommerce: автоматическое создание скидки при покупке N товаров без использования плагинов
11.05.2026
Как избежать проблем с производительностью WordPress при использовании внешних API
14.03.2026
Как автоматически удалять старые записи в WordPress с применением WP-CLI
19.02.2026