wpquiz.ru wordpress WPQuiz.ru

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

Создание интерактивного квиза с оцениванием и последующей аналитикой ответов — задача, которая требует не только умения работать с формами, но и навыков обработки данных и их отображения. В этой статье мы рассмотрим, как сделать такой квиз в 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 — они легко интегрируются и имеют удобный интерфейс.

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее