PVD User Dashboard

Give your customers a central dashboard for managing their downloads, licenses, transactions and much more.

Active 1.0.1 28 KB updated: 04/01/2026 8:41 AM

PVD User Dashboard provides a modern, block-based front-end dashboard for WordPress users – built for Full Site Editing (FSE) themes and the Block Editor.

Instead of relying on legacy "account shortcodes" and hard-coded templates, this plugin uses a dynamic block + a PHP template so you can:

  • Create a dedicated front-end dashboard page (default: /dashboard/)
  • Edit the dashboard page like any other WordPress page (Block Editor)
  • Toggle optional modules on/off
  • Keep front-end output lightweight (assets load only when the dashboard block is present)
  • Provide an inbox-like Messages experience with auditable data storage (CPT-based)

Modules

Always enabled:

  • Profile
  • Messages

Optional (toggle in Settings â†' PVD User Dashboard â†' Modules):

  • Orders (Easy Digital Downloads integration)
  • Downloads & Licenses (integration point)
  • Tables (integration point)
  • Like & Save (integration point)
  • Upload the pvd-user-dashboard folder to the /wp-content/plugins/ directory.
  • Activate the plugin through the WordPress "Plugins" menu.
  • On activation, a page titled "User Dashboard" (slug: dashboard) will be created if it does not already exist.
  • (Optional) Enable/disable modules in:

Settings â†' PVD User Dashboard â†' Modules

Features

Block-based dashboard (FSE-friendly)

  • The dashboard UI is rendered via the pvd-user-dashboard/dashboard-content block.
  • The plugin will auto-create a "User Dashboard" page on activation (if one does not already exist).

Orders (Easy Digital Downloads)

The Orders module provides a dashboard-native order history UI using EDD data.

Key points:

  • Pagination works correctly inside a dashboard tab/panel (no broken /dashboard/page/2/ routes)
  • Pagination is progressive enhanced:
  • With JavaScript: loads in-place via AJAX (no full page reload)
  • Without JavaScript: uses query-string links like: /dashboard/?orders_page=2#my-orders
  • Includes a per-order "See order details" link (EDD receipt URL where available)

Shortcode:

  • [pvd_order_history]
  • Optional attribute:
  • [pvd_order_history per_page="25"]

Note: The dashboard template uses this shortcode. You can adjust per_page in the template (or wherever you place the shortcode) without adding new admin settings.

Messages (Inbox UX)

Messages are stored as a CPT (user_msg) so admins can create and manage messages in wp-admin while users read them on the front-end.

Front-end UX:

  • Messages nav badge count (new since last read)

Dashboard page

Default location:

  • /dashboard/

The dashboard page content contains:

  • <!– wp:pvd-user-dashboard/dashboard-content /–>

You can move this block to a different page if you want. The plugin will still only enqueue its CSS/JS on pages containing that block.

Orders (Shortcode)

You can use the Orders shortcode in other places (not only the dashboard), but it is specifically built to behave correctly inside a "tabbed panel" layout.

Examples:

  • [pvd_order_history]
  • [pvd_order_history per_page="10"]

Query-string pagination parameter:

  • orders_page

Example:

  • /dashboard/?orders_page=3#my-orders

CSS hooks

Common hooks:

  • Wrapper: .pvd-user-dashboard-wrapper
  • Messages badge: .pvd-msg-badge
  • Messages item: .pvd-message
  • Orders wrapper: .pvd-order-history
  • Orders details link: a.pvd-order-details
  • Orders pagination wrapper: .pvd-pagination
  • Front-end dashboard with tabbed navigation
    Front-end dashboard with tabbed navigation
  • Orders tab: order list with in-panel pagination + "See order details"
    Orders tab: order list with in-panel pagination + "See order details"
  • Messages tab: inbox-style layout with badge + mark-as-read + remove
    Messages tab: inbox-style layout with badge + mark-as-read + remove
  • wp-admin Messages CPT list with "Re-send" row action
    wp-admin Messages CPT list with "Re-send" row action
  • Plugin settings: module toggles
    Plugin settings: module toggles