Appearance
Block patterns
The theme registers 20 block patterns under the Dankcave category. They're the building blocks of every content page.
Find them in the block editor: click + → Patterns → Dankcave.
Composing a page
Pages → Add New
Title the page
Right sidebar → Template → Landing (full-bleed)
Top-right
⋮menu → Code editorPaste one or more pattern references:
<!-- wp:pattern {"slug":"dankcave/about-hero"} /--> <!-- wp:pattern {"slug":"dankcave/commitment-split"} /--> <!-- wp:pattern {"slug":"dankcave/why-choose-cards"} /-->Switch to Visual editor to preview
Publish
Catalog
Home patterns
| Slug | Renders |
|---|---|
dankcave/hero | Display headline + product silhouette + CTA + wine watermark |
dankcave/section-header | Eyebrow + H2 + optional right-side link |
dankcave/category-showcase | 5-cell asymmetric category grid |
dankcave/editorial-band | Dark campaign section |
dankcave/product-row | 4-product horizontal row |
dankcave/blog-row | 3-post Query Loop |
dankcave/stats-row | 4-stat trust-signal counters |
dankcave/newsletter-band | Dark newsletter signup section |
About page patterns
| Slug | Renders |
|---|---|
dankcave/about-hero | About page hero |
dankcave/commitment-split | Narrative left + 2×2 category grid right |
dankcave/why-choose-cards | 3-column reason cards |
dankcave/customer-satisfaction | Dark band with 4 stats + support CTA |
dankcave/community-cta | Dark CTA with brand logo + dual buttons |
Contact + legal
| Slug | Renders |
|---|---|
dankcave/contact-split | Contact form + FAQ + support details |
dankcave/page-shipping | Full shipping policy content |
dankcave/page-returns | Full returns policy content |
dankcave/page-privacy | Full privacy policy content |
dankcave/page-terms | Full terms of service content |
Generic
| Slug | Renders |
|---|---|
dankcave/content-hero | Generic interior page hero |
dankcave/black-cta-band | Full-width dark CTA band |
Recipes
"Deals" landing
<!-- wp:pattern {"slug":"dankcave/content-hero"} /-->
<!-- wp:pattern {"slug":"dankcave/section-header"} /-->
<!-- wp:pattern {"slug":"dankcave/product-row"} /-->
<!-- wp:pattern {"slug":"dankcave/black-cta-band"} /-->Brand story page
<!-- wp:pattern {"slug":"dankcave/about-hero"} /-->
<!-- wp:pattern {"slug":"dankcave/commitment-split"} /-->
<!-- wp:pattern {"slug":"dankcave/why-choose-cards"} /-->
<!-- wp:pattern {"slug":"dankcave/customer-satisfaction"} /-->
<!-- wp:pattern {"slug":"dankcave/community-cta"} /-->FAQ / help center
<!-- wp:pattern {"slug":"dankcave/content-hero"} /-->
<!-- wp:pattern {"slug":"dankcave/contact-split"} /-->Adding a new pattern
- Create the pattern file at
theme/patterns/my-pattern.php. Return either a string of static blocks or a dynamic<!-- wp:html --><section>...</section><!-- /wp:html -->wrapper for PHP data. - Register it in
theme/inc/block-patterns.phpunder thedankcavecategory. - Style it in
theme/assets/css/theme.cssscoped to.pattern-{name}. - Clear Autoptimize after upload.
Gotcha: register_block_pattern() uses require, running the pattern PHP in the caller's scope. Wrap dynamic patterns in an IIFE so loop variables don't leak.