Guide

Quiz Builder architecture

Orchestrator: includes/class-plugin.php registers the quiz CPT, rewrites, cookies, and block classes from build/ (or src/ locally).

Block tree

BlockNamespaceRole
Controllerprc-quiz/controllerRoot Interactivity state and submit flow
Pages / Pageprc-quiz/pages, prc-quiz/pageMulti-page structure
Question / Answerprc-quiz/question, prc-quiz/answerChoices, points, correctness
Results suiteprc-quiz/results, result-table, result-histogram, group-resultsPost-completion UI; score via prc-quiz-builder/your-score bit; histogram bins on the controller (histogramPopulation); Adults Receiving This Score paragraph/heading binding
Progress barprc-quiz/progress-barLinear or circles
Synced quizprc-quiz/synced-quizCross-post embed; legacy prc-quiz/embeddable

Controller render_callback writes runtime context (quizId, quizType, displayType, configuredDisplayType, allowSubmissions, groupId, histogramPopulation, archetype, and more) into data-wp-context. Quiz action buttons on core/buttons receive Interactivity click handlers by CSS class.

Persistence

StorePath / keyContents
Firebasequiz/{id}/archetypes/{hash}Score, submission, hits
Firebasequiz/{id}/groups/{group_id}Group tallies
Post meta_reportSubmission analytics (also _submissions REST field)
Object cachegroup prc_quiz_builder_archetypesArchetype lookup, 1-day TTL
wp_optionsprc_email_audience_quiz_group_owners_{quizId}_{verified|unverified|all} (+ _meta)Mandrill emails for group creators
Cookiesprc-quiz-builder, prc-quiz-builder__typologyProgress / typology (WP Consent API functional)

URL patterns

PatternNotes
/quiz/{slug}/Main quiz
/quiz/{slug}/results/{hash}/Archetype results
/quiz/{slug}/group/{group-id}/…Group views
/quiz/{slug}/embed/ or /iframe/Framed embed

Research-team prefixes register via prc_research_teams_rewrite_config.

Key classes

PathPurpose
includes/class-rest-api.phpREST routes; $rest_disabled kill switch
includes/class-archetypes.phpFirebase archetype CRUD + cache
includes/class-groups.phpFirebase groups
includes/class-analytics.php_report / _submissions
includes/class-ability.phpprc-quiz-builder/get-analytics
includes/class-quiz-list.phpAdmin DataViews library
includes/class-histogram-population.phpParse/format public-score histogram bins
includes/class-cli-report.phpwp prc quiz report
includes/class-audience-service.phpGroup-creators audience jobs (enqueue, import, list, delete)
includes/class-cli-build-audience.phpwp prc quiz build-group-owners-audience — start job and wait

Was this helpful?