WP eLDeR Quiz документация v1.4.x
ДокументацияРазработчикамШаблоны, REST API, данные

Шаблоны, REST API, данные

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

Переопределение шаблонов

Любой шаблон из wp-elder-quiz/template-parts/ можно заменить, положив одноимённый файл в тему:

ваша-тема/wp-elder-quiz/result.php          → экран результата
ваша-тема/wp-elder-quiz/quiz-page.php       → standalone-страница квиза
ваша-тема/wp-elder-quiz/certificate.php     → сертификат
ваша-тема/wp-elder-quiz/mail/admin.php      → письмо администратору
ваша-тема/wp-elder-quiz/mail/abandon.php    → письмо-возврат

Поиск идёт сначала в теме (и дочерней теме), затем в плагине; путь можно переопределить фильтром elder_quiz_template_override_path.

REST API

Пространство имён elder-quiz/v1. Доступ — для авторизованных пользователей с правом редактирования квизов (меняется фильтром elder_quiz_rest_capability):

МаршрутОписание
GET /wp-json/elder-quiz/v1/quizzesСписок квизов.
GET /wp-json/elder-quiz/v1/resultsСписок результатов. Параметры: quiz_id, page, per_page, offset, order, orderby, date_from.
GET /wp-json/elder-quiz/v1/results/<id>Один результат целиком.
curl -u admin:app-password \
  "https://site.ru/wp-json/elder-quiz/v1/results?quiz_id=7&per_page=50"

Как хранятся данные

ТаблицаСодержимое
{prefix}elder_quiz_quizzesКвизы: заголовок, слаг, статус, автор и вся конфигурация одним JSON-полем config.
{prefix}elder_quiz_resultsПрохождения: контакты, баллы, снимок вопросов-ответов (result_data), метки и служебные данные (additional_data), даты в UTC. Признак завершения — заполненный finished_at.
  • Квизы — не записи WordPress: у них нет ревизий и корзины, они не появляются в «Записях» и не нагружают wp_posts.
  • Снимок result_data делает статистику независимой от последующих правок квиза.
  • Файлы посетителей — в защищённом подкаталоге uploads (закрыт .htaccess + index.php).

Замечания по безопасности

  • Публичный AJAX-endpoint защищён nonce (отключаемо фильтром elder_quiz_verify_nonce — только для крайних случаев кеширования).
  • Целостность прохождения защищена подписью HMAC-SHA256: подделать чужой результат или вытащить неопубликованный квиз подменой параметров нельзя.
  • Контакты валидируются на сервере; ключи мессенджеров принимаются только из белого списка включённых на квизе.
  • Правильные ответы и подсказки не попадают в HTML — клиент запрашивает их с сервера в момент проверки.
  • Штраф за подсказку и итог калькулятора фиксируются сервером — клиентские значения ни на что не влияют.
  • Экспорт CSV требует nonce и соответствующего права.

Соглашения об именах

ОбластьПрефикс
PHP-хукиelder_quiz_*
CSS-классыelder-quiz* (BEM-подобно)
CSS-переменные--elder-quiz-*
JS-событияelder-quiz:*
RESTelder-quiz/v1
Шорткоды[elder_quiz], [elder_quiz_widget], [elder_quiz_page_content]