Видео отзывы — это отличный способ повысить доверие к вашему сайту и продуктам. Особенно эффективно, когда эти отзывы публикуются зарегистрированными пользователями. В этой статье мы подробно разберём, как создать функционал сбора видео отзывов с авторизацией в WordPress, включая примеры кода и рекомендации по плагинам.
Почему стоит использовать видео отзывы с авторизацией
Видео отзывы создают живое впечатление о вашем продукте или услуге, увеличивают конверсию и делают сайт более интерактивным. Авторизация пользователей перед загрузкой видео помогает:
- Контролировать качество и безопасность контента;
- Избежать спама и фейковых отзывов;
- Связать отзывы с реальными клиентами для повышения доверия;
- Управлять отзывами через панель администратора.
Для реализации такого функционала потребуется интеграция форм с системой авторизации и загрузки видео на сервер.
Выбор плагина для сбора видео отзывов с авторизацией
Самостоятельно реализовать весь функционал сложно, поэтому рекомендуем использовать плагины, которые облегчат задачу:
- WP User Frontend Pro — позволяет создавать фронтенд-формы для авторизованных пользователей, которые могут загружать видеофайлы. Есть возможность ограничения по ролям пользователей.
- OmniVideo — специализированный плагин для работы с видео контентом. В сочетании с плагином авторизации можно быстро настроить прием видео отзывов.
- Advanced Custom Fields (ACF) Pro — с помощью поля типа "Файл" можно добавить загрузку видео в профиль пользователя, а форму вывести на фронтенде для авторизованных пользователей.
Для нашего примера рассмотрим связку OmniVideo и кастомной фронтенд-формы с проверкой авторизации.
Создание фронтенд-формы для загрузки видео отзывов
Основной задачей является вывод формы только для авторизованных пользователей и обработка видеофайлов.
Добавим в тему или плагин следующий код для отображения формы:
function omni_video_display_review_form() {
if (!is_user_logged_in()) {
echo '<p>Пожалуйста, <a href="'.wp_login_url(get_permalink()).'">войдите</a> чтобы оставить видео отзыв.</p>';
return;
}
echo '<form id="omni-video-review-form" method="post" enctype="multipart/form-data">';
echo '<label for="omni_video_review">Загрузите видео отзыв (MP4, максимум 50МБ):</label><br>';
echo '<input type="file" name="omni_video_review" accept="video/mp4" required /><br>';
echo '<input type="submit" name="omni_video_review_submit" value="Отправить" />';
echo '</form>';
}
add_shortcode('omni_video_review_form', 'omni_video_display_review_form');
Теперь обработаем загрузку видео при отправке формы. Добавим функцию в functions.php или в плагин:
function omni_video_handle_review_upload() {
if (!isset($_POST['omni_video_review_submit'])) {
return;
}
if (!is_user_logged_in()) {
wp_die('Только авторизованные пользователи могут загружать видео.');
}
if (!isset($_FILES['omni_video_review'])) {
wp_die('Файл не был загружен.');
}
$file = $_FILES['omni_video_review'];
// Проверяем тип и размер файла
if ($file['type'] !== 'video/mp4') {
wp_die('Допустим только формат MP4.');
}
if ($file['size'] > 50 * 1024 * 1024) { // 50МБ
wp_die('Максимальный размер файла 50МБ.');
}
require_once(ABSPATH . 'wp-admin/includes/file.php');
$upload_overrides = array('test_form' => false);
$movefile = wp_handle_upload($file, $upload_overrides);
if ($movefile && !isset($movefile['error'])) {
// Создаем вложение в медиабиблиотеке
$attachment = array(
'post_mime_type' => $movefile['type'],
'post_title' => 'Видео отзыв пользователя ' . wp_get_current_user()->display_name,
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $movefile['file']);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $movefile['file']);
wp_update_attachment_metadata($attach_id, $attach_data);
// Сохраняем ID вложения как пользовательский мета - можно потом вывести видео
update_user_meta(get_current_user_id(), 'omni_video_review_attachment_id', $attach_id);
echo '<p>Видео отзыв успешно загружен.</p>';
} else {
wp_die($movefile['error']);
}
}
add_action('wp', 'omni_video_handle_review_upload');
Таким образом пользователь может загрузить видео, которое сохранится в медиабиблиотеке и будет связано с профилем.
Вывод видео отзывов на сайте
Чтобы показать видео отзывы, которые пользователи загрузили, можно создать шорткод:
function omni_video_display_reviews() {
$users = get_users(array(
'meta_key' => 'omni_video_review_attachment_id',
'meta_compare' => 'EXISTS'
));
if (empty($users)) {
return '<p>Видео отзывы пока отсутствуют.</p>';
}
$output = '<div class="omni-video-reviews">';
foreach ($users as $user) {
$attach_id = get_user_meta($user->ID, 'omni_video_review_attachment_id', true);
$video_url = wp_get_attachment_url($attach_id);
$output .= '<div class="review-item">';
$output .= '<p>Отзыв пользователя: ' . esc_html($user->display_name) . '</p>';
$output .= '<video src="' . esc_url($video_url) . '" controls width="320" height="240"></video>';
$output .= '</div>';
}
$output .= '</div>';
return $output;
}
add_shortcode('omni_video_reviews', 'omni_video_display_reviews');
Для использования добавьте на страницу шорткод [omni_video_review_form] для формы загрузки и [omni_video_reviews] для вывода отзывов.
Оптимизация и безопасность
Работа с видеофайлами требует внимания к производительности и безопасности:
- Ограничивайте максимальный размер файлов;
- Проверяйте MIME-тип и расширение файлов;
- Используйте CDN и кеширование для быстрой загрузки видео;
- Регулярно обновляйте WordPress и плагины, чтобы избежать уязвимостей;
- Для снижения нагрузки можно использовать сервисы внешнего хостинга видео (например, YouTube, Vimeo) и сохранять ссылки в отзывах.
Заключение
С помощью описанного подхода можно создать удобный функционал сбора видео отзывов с авторизацией пользователей на WordPress-сайте. Этот метод универсален и может быть адаптирован под разные задачи — от простого приема видео до комплексной системы отзывов с модерацией и аналитикой.
Если хотите упростить работу с видео, посмотрите плагин OmniVideo — он отлично подходит для интеграции видео в WordPress.