WordPress Developer Ukraine, Kyiv
WordPress Custom Database Tables with dbDelta

WordPress Custom Database Tables with dbDelta

WordPress stores almost everything in wp_posts and wp_postmeta, but high-volume plugins — analytics, logging, event ticketing — need dedicated tables with proper normalisation and indexed columns. The dbDelta() function handles schema creation and migration safely: it creates new tables, adds missing columns, and changes column types without destroying existing data, making it the correct tool…
WordPress Collaboration: Block Locking, Patterns Library, and Editorial Workflow

WordPress Collaboration: Block Locking, Patterns Library, and Editorial ...

WordPress 6.4+ provides a complete set of tools for managing content contributor workflows: block locking (prevent specific blocks from being moved or deleted), a curated synced-pattern library (reusable components that only editors can modify), and post_status-based editorial stages. Combining these three features creates a structured content workflow without a third-party editorial plugin.
WordPress 6.9 Features: What Developers Need to Know

WordPress 6.9 Features: What Developers Need to Know

WordPress 6.9 continues the Gutenberg Phase 3 roadmap with collaborative editing foundations, expanded block-locking controls, and a redesigned template part focus mode. For plugin and theme developers the most impactful changes are: the new wp_block_supports() API for registering custom block support flags, improved WP_HTML_Tag_Processor with bookmark support, and interoperability improvements to the Interactivity API store.
WordPress Block Editor: Creating Custom Block Toolbars and Inspector Controls

WordPress Block Editor: Creating Custom Block Toolbars and Inspector Con ...

Beyond basic block attributes, the block editor allows you to add custom controls to the block toolbar (contextual, inline controls that appear above the selected block) and the Inspector panel (the sidebar controls under “Block” tab). Using BlockControls, InspectorControls, ToolbarGroup, and PanelBody from @wordpress/block-editor you can build rich editing UIs that feel native to Gutenberg.
WordPress Interactivity API: Building Reactive Islands Without React

WordPress Interactivity API: Building Reactive Islands Without React

WordPress 6.5 stabilised the Interactivity API — a minimal reactive system built into WordPress core that lets you add client-side state, actions, and derived values to server-rendered blocks using data-wp-* directives and a store() function. It is purpose-built for progressive enhancement and works without React, without a build step for the HTML, and with full…
WordPress Query Loop Block: Custom Queries and Extending with PHP

WordPress Query Loop Block: Custom Queries and Extending with PHP

The Query Loop block is the FSE replacement for WP_Query-based PHP templates. It is highly flexible out of the box, but to power custom post types, meta-based ordering, or relationship queries you must hook into query_loop_block_query_vars to modify the query and optionally register a custom block variation to expose the new controls in the editor.
WordPress Block Theme Development: Fluid Typography and Spacing with theme.json

WordPress Block Theme Development: Fluid Typography and Spacing with the ...

WordPress 6.1+ supports fluid typography and fluid spacing natively in theme.json — font sizes and gap values that interpolate smoothly between a minimum and maximum value across the viewport width using clamp(), generated automatically by WordPress from declarative min and max fields. This eliminates the need for media-query-based typography breakpoints entirely.
WordPress Transient Caching Patterns: Advanced Use with Expiry Groups

WordPress Transient Caching Patterns: Advanced Use with Expiry Groups

WordPress transients are a simple key-value cache stored in the wp_options table (or in Redis/Memcached when a persistent object cache is active). Beyond the basic set_transient()/get_transient() calls, a disciplined pattern of expiry-group keys, serialised complex data, and hook-driven invalidation prevents stale content and database bloat from accumulating over time.