{"id":351684,"date":"2026-09-05T01:55:13","date_gmt":"2026-09-05T01:55:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pvq-dashboard\/"},"modified":"2026-09-13T04:48:58","modified_gmt":"2026-09-13T04:48:58","slug":"pvq-dashboard","status":"publish","type":"plugin","link":"https:\/\/si.wordpress.org\/plugins\/pvq-dashboard\/","author":21037769,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"5.0.38","stable_tag":"5.0.38","tested":"7.0.5","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"PVQ Dashboard","header_author":"Plugin Launchpad","header_description":"PVQ Dashboard for native WordPress users. Includes PVQ setup, verification modal, admin dashboard, question library, users, reports, settings, and extension hooks.","assets_banners_color":"","last_updated":"2026-09-13 04:48:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":145,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"5.0.38":{"tag":"5.0.38","author":"nitinguptaji","date":"2026-09-13 04:48:58","revision":3693308}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["5.0.38"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[22649,2195,1932,5613,712],"plugin_category":[58],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-351684","plugin","type-plugin","status-publish","hentry","plugin_tags-identity","plugin_tags-lms","plugin_tags-membership","plugin_tags-questions","plugin_tags-verification","plugin_category-user-management","plugin_committers-nitinguptaji"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/pvq-dashboard.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PVQ Dashboard is a WordPress plugin for user portals, LMS sites, membership sites, eCommerce sites, and client dashboards. It lets administrators create a question bank, lets users complete PVQ setup by saving their own answers, and then displays a blocking verification modal when a user's verification has expired.<\/p>\n\n<p>This version is packaged as a standalone PVQ Dashboard plugin with its own slug, settings, database tables, REST route, AJAX actions, and shortcodes.<\/p>\n\n<p>Core features:<\/p>\n\n<ul>\n<li>Admin Dashboard with PVQ setup, verification, failure, lockout, and activity stats.<\/li>\n<li>Questions screen with create, edit, delete, archive, and duplicate actions.<\/li>\n<li>Users screen with PVQ setup status, last verified date, failed attempts, lockout status, reset, unlock, and require PVQ reset actions.<\/li>\n<li>Reports screen with CSV export limited to the last 7 days in the free plugin, date\/user\/role\/result filters, pass\/failure stats, average completion time, and most failed question IDs.<\/li>\n<li>Settings screen for verification rules, popup content, logging, cache duration, support email, and timezone selection.<\/li>\n<li>Top-tab admin navigation across Dashboard, Questions, Users, Reports, Settings, Help, and Upgrade to Pro.<\/li>\n<li>Help tab feedback\/question form that emails the configured support email.<\/li>\n<li>PVQ setup screen through [dashboard_pvq_manage].<\/li>\n<li>Verification modal through automatic expiration checks or [dashboard_pvq_verify].<\/li>\n<li>Status screen through [dashboard_pvq_status].<\/li>\n<li>Standalone aliases: [dashboard_pvq_setup] and [dashboard_pvq_check].<\/li>\n<li>REST status endpoint at \/wp-json\/dashboard-pvq\/v1\/status.<\/li>\n<li>Answers are hashed and never stored as plaintext.<\/li>\n<\/ul>\n\n<h3>Shortcodes<\/h3>\n\n<p>[dashboard_pvq_manage] - PVQ setup and answer management.\n[dashboard_pvq_status] - User verification status.\n[dashboard_pvq_verify] - Force a verification modal on the current page.\n[dashboard_pvq_setup] - Standalone alias for [dashboard_pvq_manage].\n[dashboard_pvq_check] - Standalone alias for [dashboard_pvq_verify].<\/p>\n\n<h3>Security Notes<\/h3>\n\n<p>PVQ answers are normalized and hashed using WordPress password hashing. They are not stored as plaintext. The plugin uses nonces, capability checks, prepared SQL statements, input sanitization, and output escaping.<\/p>\n\n<h3>Upgrade Notes<\/h3>\n\n<p>This build uses the standalone dashboard-pvq folder, dashboard-pvq.php main file, dashboard_pvq_* option\/user-meta keys, dashboard_pvq_* tables, and dashboard-pvq text domain so it can install separately from the prior Learn and Permits PVQ plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the ZIP file from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate PVQ Dashboard.<\/li>\n<li>Go to PVQ Dashboard &gt; Questions and configure up to 5 questions in the free MVP.<\/li>\n<li>Go to PVQ Dashboard &gt; Settings and enable the plugin after reviewing verification rules.<\/li>\n<li>Create a front-end page and add [dashboard_pvq_manage] for PVQ setup.<\/li>\n<li>Optionally add [dashboard_pvq_status] to a dashboard page.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>5.0.38<\/h4>\n\n<ul>\n<li>Enforced a fixed free-plugin cap of 5 total created questions, including archived questions.<\/li>\n<li>Added a clearer Questions tab free-plan note and upgrade link.<\/li>\n<li>Limited free CSV exports to the last 7 days and added a Pro upgrade notice\/alert for older export attempts.<\/li>\n<li>Replaced Checkpoint frequency with a disabled Pro add-on placeholder and removed free-plugin saving for that setting.<\/li>\n<li>Replaced Excluded content with a disabled Pro add-on placeholder and removed free-plugin excluded-content logic.<\/li>\n<li>Removed role-exclusion controls and Pro unlock\/filter logic from the free plugin so premium behavior is not shipped and license-unlocked inside the WordPress.org package.<\/li>\n<\/ul>\n\n<h4>5.0.33<\/h4>\n\n<ul>\n<li>Addressed Plugin Check warning items from the uploaded report around custom-table database calls, read-only admin filters, sanitized request values, and uninstall cleanup naming.<\/li>\n<\/ul>\n\n<h4>5.0.32<\/h4>\n\n<ul>\n<li>Fixed Plugin Check errors from the uploaded report.<\/li>\n<li>Added GPL license headers, updated Tested up to, removed distributable test application files, replaced direct CSV filesystem output, and added translator comments for placeholder strings.<\/li>\n<\/ul>\n\n<h4>5.0.31<\/h4>\n\n<ul>\n<li>Renamed the plugin to PVQ Dashboard.<\/li>\n<\/ul>\n\n<h4>5.0.29<\/h4>\n\n<ul>\n<li>Removed Setup complete and Setup incomplete stat cards from the Dashboard tab.<\/li>\n<\/ul>\n\n<h4>5.0.28<\/h4>\n\n<ul>\n<li>Improved Upgrade to Pro hero readability and added feature-card emojis.<\/li>\n<\/ul>\n\n<h4>5.0.27<\/h4>\n\n<ul>\n<li>Added a hard free-plan cap of 5 created questions, including archived questions.<\/li>\n<li>Added User ID to the Users table and expanded user search to support name, email, or user ID.<\/li>\n<li>Added AJAX refresh for Reports summary cards so changing the period updates the cards without a full page reload.<\/li>\n<li>Limited the Settings timezone dropdown to a curated list of 39 timezone choices.<\/li>\n<li>Polished the Upgrade to Pro page with a more visual card layout.<\/li>\n<\/ul>\n\n<h4>5.0.26<\/h4>\n\n<ul>\n<li>Replaced customer-facing and admin-facing Enrollment terminology with PVQ Setup terminology.<\/li>\n<li>Renamed setup status labels to Setup complete and Setup incomplete.<\/li>\n<li>Updated Users actions from Force Re-enrollment to Require PVQ reset.<\/li>\n<\/ul>\n\n<h4>5.0.25<\/h4>\n\n<ul>\n<li>Tightened LearnDash checkpoint detection so earlier lessons and topics remain accessible before the setup shortcode checkpoint.<\/li>\n<li>Changed course-sequence gating to fail open when the plugin cannot confidently determine course order, preventing accidental lockouts of earlier content.<\/li>\n<\/ul>\n\n<h4>5.0.24<\/h4>\n\n<ul>\n<li>Improved shortcode checkpoint gating so content after the PVQ setup checkpoint is blocked until setup is complete, while earlier content remains accessible.<\/li>\n<li>Changed PVQ setup gating to shortcode checkpoint mode by default, so earlier course lessons\/pages can stay accessible until users reach the setup shortcode.<\/li>\n<li>Added a Settings option to choose shortcode-only or sitewide setup protection.<\/li>\n<li>Reloads a gated page after setup so the original content appears immediately after setup.<\/li>\n<\/ul>\n\n<h4>5.0.22<\/h4>\n\n<ul>\n<li>Removed the PVQ setup popup gate.<\/li>\n<li>Required PVQ setup now uses the static setup form and replaces protected content until setup is complete.<\/li>\n<li>Users cannot view protected page content until they complete the static PVQ setup form.<\/li>\n<\/ul>\n\n<h4>5.0.21<\/h4>\n\n<ul>\n<li>Updated Help tab intro wording.<\/li>\n<li>Help form now explicitly pre-fills name and email from the logged-in WordPress user when available.<\/li>\n<li>Added FAQ guidance explaining shortcodes and how to use them.<\/li>\n<\/ul>\n\n<h4>5.0.19<\/h4>\n\n<ul>\n<li>Converted Settings into General, Verification, PVQ Setup Page, and Popup subtabs.<\/li>\n<li>Added settings validation that blocks invalid saves and shows a clear error message.<\/li>\n<li>Added seconds\/minutes\/hours unit selectors for time-based settings.<\/li>\n<li>Changed timezone to a dropdown, removed Category IDs and the separate Exclude administrators option.<\/li>\n<li>Renamed Required correct answers to Questions required per validation.<\/li>\n<\/ul>\n\n<h4>5.0.17<\/h4>\n\n<ul>\n<li>Matched the Reports Filters header size to the Most failed questions header.<\/li>\n<li>Doubled the vertical spacing between Reports filters and the Summary cards controls.<\/li>\n<\/ul>\n\n<h4>5.0.16<\/h4>\n\n<ul>\n<li>Added a Filters heading on the Reports tab.<\/li>\n<li>Increased spacing between report filters and summary cards selector.<\/li>\n<li>Renamed Last Year to Last year in the summary period dropdown.<\/li>\n<\/ul>\n\n<h4>5.0.15<\/h4>\n\n<ul>\n<li>Horizontally aligned Users total count with the Search Users field.<\/li>\n<li>Restyled Users total count as header text with no bubble background.<\/li>\n<li>Moved Reports Apply Filters and Export CSV controls inline with the main filters.<\/li>\n<li>Improved Summary cards label\/dropdown vertical alignment.<\/li>\n<li>Renamed the Reports summary period from Year to Last Year.<\/li>\n<\/ul>\n\n<h4>5.0.14<\/h4>\n\n<ul>\n<li>Cleaned up Users tab display count so it only appears once.<\/li>\n<li>Restyled Users total count without a white bubble background.<\/li>\n<li>Updated Reports filters to support Email or User ID search.<\/li>\n<li>Converted Reports Role filter to a dropdown of available WordPress roles.<\/li>\n<li>Changed Reports button text to Apply Filters.<\/li>\n<li>Replaced IP Address column with User ID in Reports.<\/li>\n<li>Added Summary Cards period selector with Last 24 hours, Last 7 days, Last 30 days, Year, and Lifetime options.<\/li>\n<li>Reports summary cards now default to the past 7 days.<\/li>\n<\/ul>\n\n<h4>5.0.13<\/h4>\n\n<ul>\n<li>Updated Users tab pagination to show 30 users per page.<\/li>\n<li>Added total user count and current display count to the Users tab.<\/li>\n<li>Added numbered Users pagination with arrows.<\/li>\n<li>Updated Last Verified in the Users tab to use the latest successful PVQ check instead of setup time.<\/li>\n<\/ul>\n\n<h4>5.0.12<\/h4>\n\n<ul>\n<li>Updated Dashboard Plugin Status to save through AJAX and immediately show Enabled or Disabled.<\/li>\n<li>Styled the Upgrade to Pro tab with the primary blue accent.<\/li>\n<li>Removed the Dropdown question type; questions are now Multiple choice or Free response.<\/li>\n<li>Added a disabled Import CSV control with an Upgrade to Pro link.<\/li>\n<li>Added an Archived Questions section with Un-archive and Delete actions.<\/li>\n<li>Reworded free response matching language for clarity.<\/li>\n<li>Tightened Questions tab section spacing.<\/li>\n<\/ul>\n\n<h4>5.0.11<\/h4>\n\n<ul>\n<li>Converted the Dashboard Plugin Status control to a simple inline auto-saving switch.<\/li>\n<li>Removed the Apply button from the Plugin Status toggle.<\/li>\n<li>Removed the white card\/bubble background around the Plugin Status control.<\/li>\n<\/ul>\n\n<h4>5.0.10<\/h4>\n\n<ul>\n<li>Updated Dashboard stat labels for consistency.<\/li>\n<li>Removed Plugin Version and Plugin Status stat cards.<\/li>\n<li>Added a top Dashboard enable\/disable toggle.<\/li>\n<li>Added Recent Activity pagination with five pages and an All Activity link to Reports.<\/li>\n<li>Limited Dashboard Recent Activity to 10 entries per page.<\/li>\n<li>Display PVQ setup + passed as Completed and updated setup notes to PVQ setup complete.<\/li>\n<\/ul>\n\n<h4>5.0.9<\/h4>\n\n<ul>\n<li>Added a repeatable testing suite for static package checks, WP-CLI smoke tests, optional Playwright browser tests, QA scenarios, and a manual release checklist.<\/li>\n<\/ul>\n\n<h4>5.0.8<\/h4>\n\n<ul>\n<li>Enforced the free-version cap of 5 PVQ questions in settings, frontend setup, and AJAX validation.<\/li>\n<\/ul>\n\n<h4>5.0.7<\/h4>\n\n<ul>\n<li>Updated the frontend setup required-question counter so it turns green once the minimum number of PVQ questions has been selected.<\/li>\n<\/ul>\n\n<h4>5.0.4<\/h4>\n\n<ul>\n<li>Hid saved PVQ questions and answers from users after setup.<\/li>\n<li>Replaced the setup form immediately after successful save so users cannot continue viewing selected setup details.<\/li>\n<li>Added a secure setup-complete message for users with completed setup instead of showing the setup form.<\/li>\n<\/ul>\n\n<h4>5.0.3<\/h4>\n\n<ul>\n<li>Applied visual styling refinements based on the reference PVQ plugin, including rounded cards, blue #0A369D accent states, refined modal styling, and improved admin dashboard spacing.<\/li>\n<\/ul>\n\n<h4>5.0.2<\/h4>\n\n<ul>\n<li>Changed user setup to dropdown-based PVQ question selection with a required-question counter.<\/li>\n<li>Improved verification modal JavaScript responsiveness and double-submit protection.<\/li>\n<li>Matched frontend PVQ fonts to the native WordPress admin font stack.<\/li>\n<li>Added more spacing between dashboard card numbers and labels.<\/li>\n<\/ul>\n\n<h4>5.0.1<\/h4>\n\n<ul>\n<li>Changed plugin navigation to top WordPress-style tabs across all PVQ Dashboard admin screens.<\/li>\n<li>Added Help tab feedback\/question form with Question, Feedback, Bug Report, and Feature Request message types.<\/li>\n<li>Kept submenu pages hidden from the left admin menu so the plugin feels like a tabbed settings application.<\/li>\n<\/ul>\n\n<h4>5.0.0<\/h4>\n\n<ul>\n<li>Repositioned plugin as generic PVQ Dashboard for native WordPress users.<\/li>\n<li>Added top-level PVQ Dashboard admin menu: Dashboard, Questions, Users, Reports, Settings, Help, and Upgrade to Pro.<\/li>\n<li>Added custom question table and verification log table.<\/li>\n<li>Added open-ended, dropdown, and multiple-choice question support.<\/li>\n<li>Added [dashboard_pvq_manage], [dashboard_pvq_status], and [dashboard_pvq_verify] shortcodes.<\/li>\n<li>Added blocking verification modal with timer, progress, retries, and lockout.<\/li>\n<li>Added CSV reports and REST status scaffold.<\/li>\n<\/ul>\n\n<h4>5.0.6<\/h4>\n\n<ul>\n<li>Polished dashboard\/report stat card typography, added Questions upgrade link, removed Role filter description, tightened Most Failed Questions spacing, and increased Settings section headings.<\/li>\n<\/ul>\n\n<h4>5.0.5<\/h4>\n\n<ul>\n<li>Updated visual accent to #0A369D with lighter blue supporting states.<\/li>\n<li>Renamed Customers tab to Users.<\/li>\n<li>Reduced dashboard\/report card corner radius and improved number\/label spacing.<\/li>\n<li>Added explanatory text for Reports role filtering and Settings excluded user roles.<\/li>\n<li>Moved Export CSV controls lower on Reports and tightened Help section spacing.<\/li>\n<\/ul>","raw_excerpt":"PVQ Dashboard periodically verifies logged-in WordPress users with Personal Validation Questions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351684"}],"author":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nitinguptaji"}],"wp:attachment":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351684"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351684"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351684"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351684"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351684"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}