Как сделать отзывы с фотографиями в WordPress

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

Почему отзывы с фотографиями важны для сайта на WordPress

Отзывы помогают повысить социальное доказательство и влияют на решение посетителя о покупке или использовании услуги. Когда к отзыву добавляется фото реального человека или товара, это усиливает доверие и увеличивает конверсию. Особенно это актуально для интернет-магазинов, сервисных сайтов, ресторанов и образовательных платформ.

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

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

Плагин WP Customer Reviews

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

  • Простой в настройке
  • Позволяет добавлять поля для загрузки фото
  • Есть настройка модерации отзывов

Для установки:

wp plugin install wp-customer-reviews --activate

Чтобы разрешить загрузку фото, нужно в настройках плагина включить соответствующую опцию.

Плагин Site Reviews

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

  • Поддерживает шорткоды для вставки отзывов на страницы
  • Есть виджеты и блоки для Gutenberg
  • Можно настраивать поля для фото и комментариев

Установка:

wp plugin install site-reviews --activate

Кастомное решение: как сделать отзывы с фото своими силами

Если нужно точное управление функционалом, лучше написать собственный код. Создадим кастомный тип записи wphost_review с поддержкой метаполей для фото.

Регистрация кастомного типа записи

function wphost_register_review_cpt() {
    $labels = [
        'name' => 'Отзывы',
        'singular_name' => 'Отзыв',
        'add_new' => 'Добавить отзыв',
        'add_new_item' => 'Добавить новый отзыв',
        'edit_item' => 'Редактировать отзыв',
        'all_items' => 'Все отзывы',
        'menu_name' => 'Отзывы'
    ];
    $args = [
        'labels' => $labels,
        'public' => true,
        'supports' => ['title', 'editor', 'thumbnail'],
        'has_archive' => true,
        'menu_position' => 20,
        'menu_icon' => 'dashicons-testimonial',
    ];
    register_post_type('wphost_review', $args);
}
add_action('init', 'wphost_register_review_cpt');

Включаем поддержку миниатюр (featured images) для возможности прикреплять фото к отзыву.

Добавление пользовательских полей

Для хранения дополнительной информации, например оценки, можно использовать метаполя. Добавим поле рейтинга:

function wphost_add_review_meta_box() {
    add_meta_box('wphost_review_rating', 'Рейтинг', 'wphost_render_rating_meta_box', 'wphost_review', 'side');
}
add_action('add_meta_boxes', 'wphost_add_review_meta_box');

function wphost_render_rating_meta_box($post) {
    $value = get_post_meta($post->ID, '_wphost_review_rating', true);
    echo '<label>Оценка (1-5): </label>';
    echo '<input type="number" name="wphost_review_rating" value="' . esc_attr($value) . '" min="1" max="5" />';
}

function wphost_save_review_meta($post_id) {
    if (array_key_exists('wphost_review_rating', $_POST)) {
        update_post_meta($post_id, '_wphost_review_rating', intval($_POST['wphost_review_rating']));
    }
}
add_action('save_post', 'wphost_save_review_meta');

Вывод отзывов с фотографиями на сайте

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

function wphost_reviews_shortcode($atts) {
    $args = [
        'post_type' => 'wphost_review',
        'posts_per_page' => 5,
        'post_status' => 'publish'
    ];
    $reviews = new WP_Query($args);
    if (!$reviews->have_posts()) {
        return '<p>Отзывов пока нет.</p>';
    }
    $output = '<div class="wphost-reviews">';
    while ($reviews->have_posts()) {
        $reviews->the_post();
        $rating = get_post_meta(get_the_ID(), '_wphost_review_rating', true);
        $thumb = get_the_post_thumbnail(get_the_ID(), 'thumbnail');
        $output .= '<div class="wphost-review-item">';
        if ($thumb) {
            $output .= '<div class="wphost-review-photo">' . $thumb . '</div>';
        }
        $output .= '<h3>' . get_the_title() . '</h3>';
        $output .= '<div class="wphost-review-rating">Рейтинг: ' . intval($rating) . ' / 5</div>';
        $output .= '<div class="wphost-review-content">' . get_the_content() . '</div>';
        $output .= '</div>';
    }
    wp_reset_postdata();
    $output .= '</div>';
    return $output;
}
add_shortcode('wphost_reviews', 'wphost_reviews_shortcode');

Чтобы вывести отзывы вместе с фото и рейтингом, добавьте шорткод [wphost_reviews] в нужное место сайта.

Как разрешить пользователям добавлять отзывы с фото с фронтенда

Для сбора отзывов с фото от посетителей нужно сделать форму на сайте. Это можно реализовать с помощью плагинов, например, WPForms (платный) или создать форму самостоятельно.

Пример простой формы для загрузки отзывов с фото (без плагинов)

В теме добавьте код обработки и форму:

function wphost_handle_review_submission() {
    if ('POST' === $_SERVER['REQUEST_METHOD'] && !empty($_POST['wphost_review_nonce']) && wp_verify_nonce($_POST['wphost_review_nonce'], 'wphost_submit_review')) {
        $title = sanitize_text_field($_POST['wphost_review_title']);
        $content = sanitize_textarea_field($_POST['wphost_review_content']);
        $rating = intval($_POST['wphost_review_rating']);

        $new_post = [
            'post_title' => $title,
            'post_content' => $content,
            'post_type' => 'wphost_review',
            'post_status' => 'pending'
        ];

        $post_id = wp_insert_post($new_post);

        if ($post_id) {
            update_post_meta($post_id, '_wphost_review_rating', $rating);

            if (!empty($_FILES['wphost_review_photo']['name'])) {
                require_once(ABSPATH . 'wp-admin/includes/file.php');
                $uploaded = wp_handle_upload($_FILES['wphost_review_photo'], ['test_form' => false]);
                if (!isset($uploaded['error'])) {
                    $filename = $uploaded['file'];
                    $filetype = wp_check_filetype(basename($filename), null);
                    $attachment = [
                        'post_mime_type' => $filetype['type'],
                        'post_title' => sanitize_file_name(basename($filename)),
                        'post_content' => '',
                        'post_status' => 'inherit'
                    ];
                    $attach_id = wp_insert_attachment($attachment, $filename, $post_id);
                    require_once(ABSPATH . 'wp-admin/includes/image.php');
                    $attach_data = wp_generate_attachment_metadata($attach_id, $filename);
                    wp_update_attachment_metadata($attach_id, $attach_data);
                    set_post_thumbnail($post_id, $attach_id);
                }
            }
            echo '<p>Спасибо за ваш отзыв! После модерации он появится на сайте.</p>';
        }
    }
}
add_action('template_redirect', 'wphost_handle_review_submission');

function wphost_review_form() {
    ob_start();
    ?>
    <form method="post" enctype="multipart/form-data">
        <label>Заголовок отзыва:</label><br>
        <input type="text" name="wphost_review_title" required><br>

        <label>Текст отзыва:</label><br>
        <textarea name="wphost_review_content" required></textarea><br>

        <label>Рейтинг (1-5):</label><br>
        <input type="number" name="wphost_review_rating" min="1" max="5" required><br>

        <label>Фото:</label><br>
        <input type="file" name="wphost_review_photo" accept="image/*"><br>

        <input type="hidden" name="wphost_review_nonce" value="<?php echo wp_create_nonce('wphost_submit_review'); ?>">
        <input type="submit" value="Отправить отзыв">
    </form>
    <?php
    return ob_get_clean();
}

// Используйте шорткод [wphost_review_form] чтобы вывести форму в любом месте сайта
add_shortcode('wphost_review_form', 'wphost_review_form');

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

Заключение

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

Для расширенного управления отзывами и интеграции с другими сервисами рекомендуем обратить внимание на плагины и темы от WPGShop.

Как установить ограничение на количество попыток входа в WordPress
21.03.2026
Как отключить индексацию отдельных страниц WordPress для поисковых систем
28.03.2026
Как создать автоматические резервные копии WordPress без плагинов
02.02.2026
Как отключить AJAX в WordPress без потери производительности
13.01.2026
Как использовать PHPMailer в WordPress для отправки писем
04.03.2026