-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Complete reference documentation for developing blocks in the DesignSetGo WordPress plugin.
Note on this index: Several top-level folders under
docs/(blocks/,extensions/,api/,patterns/,plans/,audits/,reviews/) are maintained separately and change frequently. This index links to those folders, not individual files inside them — open the folder for the current file list rather than trusting a hardcoded list here.
Never contributed before? Start with these guides in order:
-
GETTING-STARTED.md ⭐ Start here!
- Complete setup walkthrough
- Prerequisites and installation
- Making your first change
- Common workflows
-
ARCHITECTURE.md - Understand the codebase
- Project structure
- How blocks work
- Build system
- Data flow
-
../CONTRIBUTING.md - Contribution workflow
- Code standards
- Testing requirements
- Pull request process
- Read BEST-PRACTICES-SUMMARY.md for quick patterns
- Review BLOCK-DEVELOPMENT-BEST-PRACTICES-COMPREHENSIVE.md for deep understanding
- Check BLOCK-CONTROLS-ORGANIZATION.md for inspector-panel conventions when creating new blocks
Both of the guides above predate the Theme 3 Inspector IA rollout and still show raw
PanelBody/PanelColorSettingsexamples. The concepts (Settings vs. Style categorization, decision trees) are still valid; for the current implementation pattern use<DsgoInspectorPanel>(see../.claude/CLAUDE.md) instead of a barePanelBody.
This plugin was built with heavy AI assistance.
-
AI-ASSISTED-DEVELOPMENT.md ⭐ Complete AI development guide!
- How this plugin is built with Claude Code
- Available slash commands and skills
- Best practices for AI-assisted development
- Common workflows and examples
-
../.claude/CLAUDE.md - Development patterns and context
- Critical patterns AI follows
- WordPress best practices
- Project-specific conventions
-
BEST-PRACTICES-SUMMARY.md - Quick reference
-
BLOCK-TEMPLATE-EDIT.js - Block template to copy
- README.md - This file, your navigation hub
- GETTING-STARTED.md - Complete setup and onboarding guide
- ARCHITECTURE.md - Deep dive into project architecture
- api/ — API references (Abilities API, Block Bindings, REST API, WP-CLI, etc.)
- blocks/ — Per-block user-facing documentation
- extensions/ — Per-extension documentation
- patterns/ — Design/architecture pattern write-ups
- plans/ — Dated implementation plans
- audits/ — Block and codebase audits
- reviews/ — Dated review notes
Development guides and best practices:
- AI-ASSISTED-DEVELOPMENT.md - AI-assisted development guide
- BEST-PRACTICES-SUMMARY.md - Quick reference guide
- BLOCK-DEVELOPMENT-BEST-PRACTICES-COMPREHENSIVE.md - Comprehensive guide
- BLOCK-CONTROLS-ORGANIZATION.md - Inspector controls decision tree (Settings vs. Style)
- BLOCK-EXCLUSION-GUIDE.md - Excluding third-party blocks from DSGo extensions
- DEPLOYING-TO-WORDPRESS-ORG.md - Release process to WordPress.org
- DESIGN-SYSTEM.md - Design system and theme.json tokens
Accessibility and compliance documentation:
- ACCESSIBILITY-COLOR-CONTRAST-GUIDE.md - Color contrast standards
- GDPR-COMPLIANCE.md - GDPR compliance guide
RichText format documentation:
- TEXT-STYLE.md - Inline text style format (color, highlight, size)
Code templates and boilerplate:
- BLOCK-TEMPLATE-EDIT.js - Block edit.js template
Testing documentation and strategies:
- TESTING.md - E2E (Playwright) testing guide
- TESTING-ABILITIES-API.md - Abilities API manual testing walkthrough
- E2E-LIFECYCLE.md - Playwright/browser lifecycle regression notes
- FORM-SELECT-I18N.md - Form select i18n regression coverage
Debugging and problem-solving guides:
- TROUBLESHOOTING.md - Canonical troubleshooting guide (build, wp-env, dependencies, CI)
- HANDLING-LINT-ERRORS.md - Handling ESLint "unused import" false positives
Complete step-by-step guide for new contributors: prerequisites, stack overview, step-by-step setup, your first change, development tools, common workflows, and troubleshooting pointers.
When to use: First time setting up the project or helping someone else get started.
Deep dive into project architecture and code organization: directory structure, block anatomy, build system, data flow, extension system, PHP backend, testing infrastructure, AI integration (Abilities API), and the Theme 1–6 editor UX foundations.
When to use: Understanding how the codebase works, onboarding to the project, or making architectural decisions.
Complete contribution guide and workflow: setup, architecture overview, development workflow, code standards, testing requirements, and the PR process.
When to use: Ready to contribute code or submitting a pull request.
Guide to AI-assisted development with Claude Code: available skills/commands, best practices, and common workflows.
When to use: Using AI tools to contribute, or curious how this plugin is built with AI assistance.
Location: ../.claude/CLAUDE.md
Rule: ALWAYS use ColorGradientSettingsDropdown in <InspectorControls group="color">, NEVER PanelColorSettings.
import {
__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,
__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,
} from '@wordpress/block-editor';
export default function Edit({ attributes, setAttributes, clientId }) {
const colorGradientSettings = useMultipleOriginColorsAndGradients();
return (
<InspectorControls group="color">
<ColorGradientSettingsDropdown
panelId={clientId}
title={__('Colors', 'designsetgo')}
settings={[
{
label: __('Text Color', 'designsetgo'),
colorValue: textColor,
onColorChange: (color) =>
setAttributes({ textColor: color || '' }),
clearable: true,
},
]}
{...colorGradientSettings}
/>
</InspectorControls>
);
}Why This Matters:
-
PanelColorSettingsis a deprecated WordPress pattern. -
ColorGradientSettingsDropdownplaces controls in the Styles tab (WordPress standard, better UX). - There are zero
PanelColorSettingsinstances left insrc/— keep it that way.
Every custom control outside of color must be wrapped in <DsgoInspectorPanel> / <DsgoInspectorPanel.Item> following the Settings → Style → Advanced three-panel convention — see ../.claude/CLAUDE.md ("Inspector IA (Theme 3)") and src/components/shared/DsgoInspectorPanel/. Reaching for PanelBody directly is the older pattern several of the guides below still illustrate.
- Use for: Quick reference during development
- Contains: Critical rules, decision trees, copy-paste patterns
- Use for: Deep understanding of patterns and rationale
- Contains: Major topics with real-world examples (some code samples predate Theme 3 — see the note above)
- Use for: Starting point for new blocks
- Copy this file when creating new blocks
Inspector controls organization: Settings tab vs. Styles tab decision tree, Block Supports usage.
Several deeper technical guides live in ../.claude/docs/ rather than docs/guides/ because they're written as working references for AI-assisted development and are linked directly from ../.claude/CLAUDE.md:
-
REFACTORING-GUIDE.md- File-size limits and the standard block refactor pattern -
FSE-COMPATIBILITY-GUIDE.md- Full Site Editing / theme.json support checklist -
EDITOR-STYLING-GUIDE.md- Declarative styling (useInnerBlocksProps,:where()specificity) — canonical version of the editor/frontend-parity lessons -
KSES-ALLOWLIST-GUIDE.md- Why and how DSGo extendswp_kses_post() -
QUERY-BLOCK-GUIDE.md- Dynamic Query block family developer guide
- Copy BLOCK-TEMPLATE-EDIT.js to
src/blocks/{block-name}/edit.js - Update
block.jsonwith propersupports(native supports before custom controls) - Implement
save.jsmatchingedit.jsstructure - Add color controls using the
ColorGradientSettingsDropdownpattern above, and wrap any other custom controls in<DsgoInspectorPanel> - Test in editor and frontend
- Import
ColorGradientSettingsDropdownanduseMultipleOriginColorsAndGradientsas shown above - Add
clientIdto the function signature - Call
useMultipleOriginColorsAndGradients() - Place the dropdown inside
<InspectorControls group="color">
- Check file line count:
wc -l src/blocks/{block-name}/edit.js - If >300 lines, extract components and utilities (see
../.claude/docs/REFACTORING-GUIDE.md) - Extract components into
components/directory - Extract utilities into
utils/directory - Keep
index.jsfocused on registration only
→ ../.claude/CLAUDE.md or BLOCK-TEMPLATE-EDIT.js
→ BEST-PRACTICES-SUMMARY.md or BLOCK-DEVELOPMENT-BEST-PRACTICES-COMPREHENSIVE.md
→ ../.claude/docs/FSE-COMPATIBILITY-GUIDE.md
→ ../.claude/docs/REFACTORING-GUIDE.md
→ BLOCK-CONTROLS-ORGANIZATION.md
→ troubleshooting/TROUBLESHOOTING.md
- Read BEST-PRACTICES-SUMMARY.md - Critical rules
- Copy BLOCK-TEMPLATE-EDIT.js - Build first block
- Read
../.claude/docs/FSE-COMPATIBILITY-GUIDE.md- Make it compatible
- Read BLOCK-DEVELOPMENT-BEST-PRACTICES-COMPREHENSIVE.md - Deep understanding
- Review BLOCK-CONTROLS-ORGANIZATION.md - Better UX patterns
- Study Design System - Proper styling
- Study advanced patterns in
patterns/ - Contribute patterns back to ../.claude/CLAUDE.md
When you discover new patterns or best practices:
- Critical patterns → Add to ../.claude/CLAUDE.md
- Quick reference → Add to BEST-PRACTICES-SUMMARY.md
- Deep explanations → Add to BLOCK-DEVELOPMENT-BEST-PRACTICES-COMPREHENSIVE.md
- Specialized topics → Create or update a specialized guide in the appropriate folder
- Before adding a new doc, check whether an existing one already covers the topic — keep one canonical doc per topic rather than a second file with the same title.
WordPress Compatibility: 6.7+ (tested to 6.9 via .wp-env.json)
Auto-generated from
docs/README.md. To update, edit the source file and changes will sync on next push to main.
- Accordion
- Advanced Heading
- Blobs
- Breadcrumbs
- Card
- Chart
- Comparison Table
- Countdown Timer
- Counter Group
- Divider
- Dynamic Image
- Fifty Fifty
- Flip Card
- Form Builder
- Grid
- Hotspot
- Icon
- Icon Button
- Icon List
- Image Accordion
- Map
- Modal
- Modal Api Reference
- Modal Auto Triggers
- Modal Fse Compatibility
- Modal Gallery Navigation
- Modal Trigger
- Pill
- Product Categories Grid
- Product Showcase Hero
- Progress Bar
- Query
- Query Filter
- Query Group Header
- Query No Results
- Query Pagination
- Query Results
- Row
- Scroll Accordion
- Scroll Marquee
- Scroll Slides
- Section
- Section Divider
- Slider
- Star Rating
- Sticky Sections
- Table Of Contents
- Tabs
- Text Path
- Timeline
- Background Video
- Block Animations
- Clickable Group
- Conditional Visibility
- Custom Css
- Draft Mode
- Dynamic Tags
- Expanding Background
- Grid Mobile Order
- Grid Span
- Hover Effects
- Max Width
- Responsive Visibility
- Reveal Control
- Scroll Parallax
- Sticky Header
- Style Binding
- Svg Patterns
- Text Alignment Inheritance
- Text Reveal
- Abilities Api
- Abilities Api Guide
- Block Bindings
- Draft Mode Api
- Interactive Blocks
- Markdown Content Negotiation
- Rest Api Reference
- Wp Cli Reference
- Ai Assisted Development
- Best Practices Summary
- Block Controls Organization
- Block Development Best Practices Comprehensive
- Block Exclusion Guide
- Deploying To Wordpress Org
- Design System
- 2026 04 16 Blocks Editor Ux Design
- 2026 04 17 Theme 3 Inspector Ia
- 2026 04 21 Query Block Onboarding
- 2026 04 21 Query Capable Layout Blocks Design
- 2026 04 27 Block Roadmap Ideas
- 2026 07 01 Shape Divider Theme Inheritance
- 2026 07 02 Icon Block Dynamic Render Pilot
- 2026 07 06 Section Divider Block Design
- 2026 07 06 Section Style Variations Fse Design
- 2026 07 06 Section Styles Editor Preview
- 2026 07 07 Row Grid Overlay Hover Parity Design
- 2026 07 21 Conditional And Dup Label Sourcing
- 2026 07 23 Theme Block Type Animation Defaults
- 2026 08 16 Chart Block
- 2026 08 16 Greenshift Gap Roadmap
- 2026 08 17 Woocommerce Surface
- 2026 08 24 Loop Carousel
- 2026 08 24 Star Rating Block
- 2026 09 17 Abilities Drift Prevention
- 2026 09 17 Abilities Drift Prevention Implementation
- 2026 09 29 Existing User Regression Fixes
- 2026 09 29 Release Preflight Fixes
- Readme
- 2026 07 02 Block Authorability Audit
- 2026 09 29 Regression Fixes
- 2026 09 29 Release 2.9.0
- 2026 09 29 Release Fixes