Создание интерактивного квиза с оцениванием и последующей аналитикой ответов — задача, которая требует не только умения работать с формами, но и навыков обработки данных и их отображения. В этой статье мы рассмотрим, как сделать такой квиз в WordPress, используя как готовые плагины, так и примеры кастомной реализации на PHP и JavaScript.
Выбор плагина для квиза с оцениванием и аналитикой
Для начала рассмотрим несколько популярных плагинов, которые позволяют создать квиз с оцениванием и базовой аналитикой:
- WP Quiz Pro — мощный инструмент для создания различных типов квизов с возможностью оценки и отчетности. Есть готовые шаблоны и интеграция с Google Analytics.
- Quizle — плагин, который специализируется на создании многоуровневых квизов с продвинутой аналитикой и сохранением результатов пользователей.
- Forminator — универсальный конструктор форм с возможностью создания квизов и оценивания ответов, а также удобным экспортом данных.
Для примера далее мы рассмотрим, как реализовать базовый квиз с оцениванием и аналитикой на чистом коде, чтобы лучше понимать логику и иметь возможность гибко кастомизировать функционал.
Структура квиза с оцениванием: вопросы, ответы и баллы
Для начала нужно определить структуру вопросов и ответов. Каждый вопрос содержит несколько вариантов ответов, каждому из которых присвоен определённый балл. В конце суммируем баллы и выводим результат.
Пример массива с вопросами и вариантами:
$wpquizru_questions = [
[
'question' => 'Какой ваш уровень владения WordPress?',
'answers' => [
['text' => 'Начинающий', 'points' => 1],
['text' => 'Средний', 'points' => 3],
['text' => 'Продвинутый', 'points' => 5],
]
],
[
'question' => 'Как часто вы обновляете плагины?',
'answers' => [
['text' => 'Редко', 'points' => 1],
['text' => 'Регулярно', 'points' => 5],
['text' => 'Только при проблемах', 'points' => 2],
]
],
];Такой массив может храниться в файле темы, плагине или даже в базе данных, если хотите сделать динамическое редактирование вопросов.
Создание формы и обработка данных квиза в WordPress
Далее необходимо вывести форму с вопросами и вариантами ответов на странице. Для этого используем шорткод с функцией, например, wpquizru_render_quiz_form().
function wpquizru_render_quiz_form() {
global $wpquizru_questions;
ob_start();
?>
<form method="post" id="wpquizru-quiz-form">
<?php foreach($wpquizru_questions as $index => $q): ?>
<fieldset>
<legend><?php echo esc_html($q['question']); ?></legend>
<?php foreach($q['answers'] as $aindex => $answer): ?>
<label>
<input type="radio" name="answer_<?php echo $index; ?>" value="<?php echo $answer['points']; ?>" required>
<?php echo esc_html($answer['text']); ?>
</label><br>
<?php endforeach; ?>
</fieldset>
<?php endforeach; ?>
<button type="submit" name="wpquizru_submit">Отправить</button>
</form>
<?php
return ob_get_clean();
}
add_shortcode('wpquizru_quiz', 'wpquizru_render_quiz_form');После отправки формы в $_POST придут значения баллов, которые нужно обработать, суммировать и вывести результат.
Обработка результатов и вывод оценки
Пример функции обработки:
function wpquizru_handle_quiz_submission() {
global $wpquizru_questions;
if (isset($_POST['wpquizru_submit'])) {
$total_score = 0;
foreach ($wpquizru_questions as $index => $q) {
if (isset($_POST['answer_' . $index])) {
$points = intval($_POST['answer_' . $index]);
$total_score += $points;
} else {
echo '<p>Пожалуйста, ответьте на все вопросы.</p>';
return;
}
}
// Выводим результат
echo '<h3>Ваш общий балл: ' . $total_score . '</h3>';
echo wpquizru_get_result_interpretation($total_score);
}
}
add_action('wp_footer', 'wpquizru_handle_quiz_submission');Функция wpquizru_get_result_interpretation() возвращает текстовое описание результата в зависимости от набранных баллов.
Пример интерпретации результата
function wpquizru_get_result_interpretation($score) {
if ($score < 5) {
return '<p>Вы только начинаете знакомиться с WordPress.</p>';
} elseif ($score < 8) {
return '<p>Ваш уровень — средний пользователь.</p>';
} else {
return '<p>Вы продвинутый пользователь WordPress.</p>';
}
}Добавление аналитики: сохранение и просмотр результатов
Чтобы изучать ответы пользователей, нужно сохранять результаты в базу данных. Создадим таблицу и добавим функции для записи и вывода статистики.
Создание таблицы для хранения результатов
В хуке активации плагина или темы добавьте:
function wpquizru_create_results_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpquizru_results';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_ip varchar(100) NOT NULL,
score int NOT NULL,
time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'wpquizru_create_results_table');Сохранение результатов после отправки квиза
function wpquizru_save_quiz_result($score) {
global $wpdb;
$table_name = $wpdb->prefix . 'wpquizru_results';
$wpdb->insert(
$table_name,
[
'user_ip' => $_SERVER['REMOTE_ADDR'],
'score' => $score,
'time' => current_time('mysql')
]
);
}Вызовите эту функцию в конце обработки формы:
wpquizru_save_quiz_result($total_score);Вывод статистики квиза в админке
Для анализа создадим простую страницу в админке, где отобразим средний балл, количество участников и график (например, с помощью Google Charts).
function wpquizru_admin_menu() {
add_menu_page('Статистика квиза', 'Статистика квиза', 'manage_options', 'wpquizru_stats', 'wpquizru_render_stats_page');
}
add_action('admin_menu', 'wpquizru_admin_menu');
function wpquizru_render_stats_page() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpquizru_results';
$count = $wpdb->get_var("SELECT COUNT(*) FROM $table_name");
$avg = $wpdb->get_var("SELECT AVG(score) FROM $table_name");
echo '<h2>Статистика квиза</h2>';
echo "<p>Всего участников: " . intval($count) . "</p>";
echo "<p>Средний балл: " . round(floatval($avg), 2) . "</p>";
// Здесь можно добавить график с помощью JS
}Интеграция с плагином Quizle для расширенной аналитики
Если вы хотите получить расширенную аналитику без написания кода, попробуйте плагин Quizle. Он позволяет:
- Собирать детальные отчёты по каждому пользователю
- Экспортировать данные в Excel или CSV
- Настраивать многоуровневые квизы с условиями переходов
Quizle отлично подходит для маркетинговых и образовательных ресурсов, где нужна глубокая аналитика результатов.
Заключение по технической реализации квиза с оцениванием и аналитикой
Мы рассмотрели, как сделать квиз с оцениванием в WordPress на примере простого массива вопросов, формы с радио-кнопками и обработки результатов на PHP. Для хранения результатов создана таблица в базе данных и реализован базовый вывод статистики в админке.
Если вы хотите сэкономить время и получить расширенный функционал, обратите внимание на плагины WP Quiz Pro и Quizle — они легко интегрируются и имеют удобный интерфейс.
Такой подход позволит вам не только создать полезный интерактивный контент, но и собрать важную информацию о вашей аудитории для дальнейшего анализа и улучшения сайта.