Repository navigation
Blocks
Every block below lives in its own PV Blocks Suite category in the inserter, positioned right after WordPress' first default category. All blocks are dynamic (server-rendered in PHP).
- Container
- CTA
- Accordion
- Pricing Table
- Card Grid
- Alert Box
- Timeline
- Before/After
- Testimonials
- Stats Counter
- Tabs
- Team
A reusable wrapper block for composing layout sections.
- Padding control for each side (top, right, bottom, left)
- Solid background color or background image
- Configurable max-width with automatic horizontal centering
- Wide and full alignment support
- Nests any other blocks via
InnerBlocks
A call-to-action block for driving a single, focused action.
- Rich-text heading (configurable H2–H6 level) and description with inline formatting (bold, italic)
- One button with configurable label, URL, and "open in new tab" (with a screen-reader announcement for the new-tab behavior and a hover animation that works with any button color)
- Text alignment control (left, center, right, justify)
- Independent background and text colors for both the block and the button, with a built-in contrast warning for accessibility
- Optional background image
- Native padding and border-radius controls, with automatic content
clipping (
overflow: hidden) whenever a radius is applied
A list of collapsible items, ideal for FAQs.
- Any number of items, added, reordered, duplicated, or removed through the standard block toolbar
- Each item's panel accepts real nested blocks (paragraphs, images, lists, …), not just plain text
- Built on native HTML
<details>/<summary>— accessible and JavaScript-free - Each question is a real, configurable H2–H6 heading, so screen-reader users can navigate the list by heading
- Smooth open/close height animation and a rotating caret indicator, both pure CSS
- Optional "only one item open at a time" behavior
- Per-item "open by default" control
A row of pricing cards for comparing plans.
- Any number of plans, added, reordered, duplicated, or removed through the standard block toolbar
- Each plan: name (configurable H2–H6 heading), price with an optional period (e.g. "/month"), a short description, and a button (URL, "open in new tab" with a screen-reader announcement)
- The feature list is real
InnerBlocks— defaults to a native list, editable like any other WordPress list - "Featured plan" highlight (border/shadow) with a customizable badge label and an optional background/text color pair (with a contrast warning) just for that card
- Native padding and border-radius controls
A responsive grid of cards, ideal for services, portfolios, or blog teasers.
- Any number of cards, added, reordered, duplicated, or removed through the standard block toolbar
- Configurable column count (2–4), responsive down to a single column on small screens
- Each card: an image with editable alt text, a heading (configurable H2–H6), a description, and a button (URL, "open in new tab" with a screen-reader announcement)
- Native padding and border-radius controls
A colored callout for highlighting important information.
- Four semantic types — info, success, warning, error — each with a fixed, accessible color pair and its own icon, so meaning stays consistent everywhere the block is used
- Optional heading and a message
- Icon can be toggled off; a screen-reader-only label always announces the alert's type regardless, since color and icon alone aren't accessible information
- Native padding and border-radius controls
A vertical timeline for showing a sequence of events or steps.
- Any number of events, added, reordered, duplicated, or removed through the standard block toolbar
- Renders as a real ordered list, with a connecting line and dot marker drawn in pure CSS
- Each event: an optional image with editable alt text, a date or label, a heading (configurable H2–H6), and a description
An interactive slider for comparing a before and after image.
- Before and after images, each with editable alt text
- Move the slider by dragging the handle, clicking anywhere on the image, or using the arrow keys — fully keyboard-accessible with a proper ARIA slider role
- Configurable initial position and aspect ratio (1:1, 4:3, 16:9, 21:9, 3:2)
- Optional, editable "before"/"after" labels
- Built on the native WordPress Interactivity API — no page reload, no custom framework
- Native padding and border-radius controls
A responsive grid of testimonials, ideal for building trust with social proof.
- Any number of testimonials, added, reordered, duplicated, or removed through the standard block toolbar
- Configurable column count (2–4), responsive down to a single column on small screens
- Each testimonial: a quote, the author's name, an optional role or company, an optional avatar with editable alt text, and an optional 1–5 star rating
- Renders as a real
<blockquote>/<figcaption>/<cite>, not generic<div>s, for correctly-structured, accessible markup - Native padding and border-radius controls
A grid of animated stat counters, ideal for social proof ("500+ Clients", "20 Years", "99% Satisfaction").
- Any number of stats, added, reordered, duplicated, or removed through the standard block toolbar
- Configurable column count (2–4), responsive down to a single column on small screens
- Each stat: a target number with optional prefix/suffix and decimal places, and a label
- Numbers animate counting up from zero the first time they scroll into view, with a shared, configurable animation duration for the whole grid; the real final value is always rendered server-side first, so the correct number is visible even if JavaScript never loads
- Respects the visitor's reduced-motion preference — counters display their final value immediately instead of animating
- Native padding and border-radius controls
A standard, accessible tabbed interface for organizing content into switchable sections.
- Any number of tabs, added, reordered, duplicated, or removed through the standard block toolbar
- Each tab's panel accepts real nested blocks, not just plain text
- Full keyboard support — arrow keys, Home, and End move between tabs and switch the active panel, following the WAI-ARIA Tabs pattern
- Correct ARIA roles and attributes throughout (
tablist/tab/tabpanel,aria-selected, rovingtabindex) - If JavaScript never loads, every tab's content is still shown, stacked and fully readable, rather than a broken widget
A responsive grid of team member cards, ideal for "About us" and "Meet the team" sections.
- Any number of team members, added, reordered, duplicated, or removed through the standard block toolbar
- Configurable column count (2–4), responsive down to a single column on small screens
- Each member: an optional photo with editable alt text, a name (configurable H2–H6 heading), a role or title, and an optional short bio
- Native padding and border-radius controls
PV Blocks Suite