Title: Advanced – WordPress Developer Blog

---

 * [Showcase](https://wordpress.org/showcase/)
 * [Plugins](https://wordpress.org/plugins/)
 * [Themes](https://wordpress.org/themes/)
 * [Hosting](https://wordpress.org/hosting/)
 * [News](https://wordpress.org/news/)
    - [Learn WordPress](https://learn.wordpress.org/)
    - [Documentation](https://wordpress.org/documentation/)
    - [Education](https://wordpress.org/education/)
    - [Forums](https://wordpress.org/support/forums/)
    - [Developers](https://developer.wordpress.org/)
    - [Blocks](https://wordpress.org/blocks/)
    - [Patterns](https://wordpress.org/patterns/)
    - [Photos](https://wordpress.org/photos/)
    - [Openverse ︎](https://openverse.org/)
    - [WordPress.tv ︎](https://wordpress.tv/)
 *  - [About WordPress](https://wordpress.org/about/)
    - [Make WordPress](https://make.wordpress.org/)
    - [Events](https://events.wordpress.org/)
    - [Five for the Future](https://wordpress.org/five-for-the-future/)
    - [Enterprise](https://wordpress.org/enterprise/)
    - [Gutenberg ︎](https://wordpress.org/gutenberg/)
    - [Job Board ︎](https://jobs.wordpress.net/)
 * [Swag ︎](https://mercantile.wordpress.org/)
 * [Get WordPress](https://wordpress.org/download/)

Search in WordPress.org

 [ Get WordPress ](https://wordpress.org/download/)

[WordPress Developer Blog](https://developer.wordpress.org/news)

Advanced

 * [Snippets](https://developer.wordpress.org/news/snippets/)
    - [Blocks](https://developer.wordpress.org/news/category/blocks/)
    - [Concepts](https://developer.wordpress.org/news/category/concepts/)
    - [Common APIs](https://developer.wordpress.org/news/category/common-apis/)
    - [Design](https://developer.wordpress.org/news/category/design/)
    - [Playground](https://developer.wordpress.org/news/category/playground/)
    - [Plugins](https://developer.wordpress.org/news/category/plugins/)
    - [Themes](https://developer.wordpress.org/news/category/themes/)
 *  - [About this site](https://developer.wordpress.org/news/about/)
    - [Updates](https://developer.wordpress.org/news/category/updates/)
    - [How to contribute](https://developer.wordpress.org/news/how-to-contribute/)
    - [Tips and guidelines](https://developer.wordpress.org/news/tips-and-guidelines-for-writers/)
 * [Subscribe](https://developer.wordpress.org/news/subscribe/)
 * [Developer Resources](https://developer.wordpress.org/)

 * [Snippets](https://developer.wordpress.org/news/snippets/)
    - [Blocks](https://developer.wordpress.org/news/category/blocks/)
    - [Concepts](https://developer.wordpress.org/news/category/concepts/)
    - [Common APIs](https://developer.wordpress.org/news/category/common-apis/)
    - [Design](https://developer.wordpress.org/news/category/design/)
    - [Playground](https://developer.wordpress.org/news/category/playground/)
    - [Plugins](https://developer.wordpress.org/news/category/plugins/)
    - [Themes](https://developer.wordpress.org/news/category/themes/)
 *  - [About this site](https://developer.wordpress.org/news/about/)
    - [Updates](https://developer.wordpress.org/news/category/updates/)
    - [How to contribute](https://developer.wordpress.org/news/how-to-contribute/)
    - [Tips and guidelines](https://developer.wordpress.org/news/tips-and-guidelines-for-writers/)
 * [Subscribe](https://developer.wordpress.org/news/subscribe/)
 * [Developer Resources](https://developer.wordpress.org/)

# Advanced

 * 
   ## 󠀁[Rethinking do_action(): Events as objects, hooks as class names](https://developer.wordpress.org/news/2026/08/rethinking-do_action-events-as-objects-hooks-as-class-names/)󠁿
   
 * By [Justin Tadlock](https://profiles.wordpress.org/greenshady/)
 * August 3, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Plugins](https://developer.wordpress.org/news/category/plugins/),
   [Themes](https://developer.wordpress.org/news/category/themes/)
 * How to use typed event objects to improve the payload you send to plugin and 
   theme extenders.
 * 
   ## 󠀁[Build your first AI-Powered WordPress plugin](https://developer.wordpress.org/news/2026/07/build-your-first-ai-powered-wordpress-plugin/)󠁿
   
 * By [Jonathan Bossenger](https://profiles.wordpress.org/psykro/)
 * July 30, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [AI](https://developer.wordpress.org/news/category/ai/)
 * If you’ve been watching the Core AI projects land and wondering how the pieces
   fit together in a real plugin, then this post is for you. We’re going to build
   one together, step by step, focusing on how to implement each of the three AI
   building blocks.
 * 
   ## 󠀁[Getting started writing WordPress E2E Tests with Playwright](https://developer.wordpress.org/news/2026/05/getting-started-writing-wordpress-e2e-tests-with-playwright/)󠁿
   
 * By [Róbert Mészáros](https://profiles.wordpress.org/meszarosrob/)
 * May 4, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Tests](https://developer.wordpress.org/news/category/tests/),
   [Tools](https://developer.wordpress.org/news/category/tools/)
 * Learn how to set up Playwright for WordPress E2E testing and write tests using
   real-world examples so you have a solid foundation to adapt for your own project.
 * 
   ## 󠀁[@wordpress/build, the next generation of WordPress plugin build tooling](https://developer.wordpress.org/news/2026/04/wordpress-build-the-next-generation-of-wordpress-plugin-build-tooling/)󠁿
   
 * By [JuanMa Garrido](https://profiles.wordpress.org/juanmaguitar/)
 * April 2, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Updates](https://developer.wordpress.org/news/category/updates/)
 * @wordpress/build replaces webpack and Babel with esbuild, auto-generates your
   PHP script registration from package.json conventions, and requires zero config.
   It already builds all 100+ Gutenberg packages. The plan is for it to power @wordpress/
   scripts under the hood — so wp-scripts build stays the same, but gets faster 
   and drops the hand-written PHP. The API is…
 * 
   ## 󠀁[A better way to test HTML in WordPress with assertEqualHTML()](https://developer.wordpress.org/news/2026/02/a-better-way-to-test-html-in-wordpress-with-assertequalhtml/)󠁿
   
 * By [JuanMa Garrido](https://profiles.wordpress.org/juanmaguitar/)
 * February 26, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Tests](https://developer.wordpress.org/news/category/tests/)
 * PHPUnit tests for HTML output are fragile. Attribute order changes, a trailing
   semicolon, and suddenly tests fail — even though the browser renders the same
   thing. WordPress 6.9 adds assertEqualHTML() to WP_UnitTestCase. It compares HTML
   semantically, so only real differences cause failures.
 * 
   ## 󠀁[How to use DataForm to create plugin settings pages](https://developer.wordpress.org/news/2026/01/how-to-use-dataform-to-create-plugin-settings-pages/)󠁿
   
 * By [Róbert Mészáros](https://profiles.wordpress.org/meszarosrob/)
 * January 20, 2026
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Common APIs](https://developer.wordpress.org/news/category/common-apis/),
   [Plugins](https://developer.wordpress.org/news/category/plugins/)
 * Learn how to build a settings page for the new era of WordPress admin, based 
   on React components and using the DataForm component’s config-driven approach.
 * 
   ## 󠀁[Word Switcher: Extending Core Blocks with Interactivity](https://developer.wordpress.org/news/2025/12/word-switcher-extending-core-blocks-with-interactivity/)󠁿
   
 * By [JuanMa Garrido](https://profiles.wordpress.org/juanmaguitar/)
 * December 19, 2025
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Blocks](https://developer.wordpress.org/news/category/blocks/)
 * Learn to build a smooth word-switching effect in WordPress by combining four 
   key APIs: HTML API for markup transformation, Interactivity API for animations,
   Format API for editor controls, and JavaScript Modules for efficient code—all
   without external libraries.
 * 
   ## 󠀁[How to add automated unit tests to your WordPress plugin](https://developer.wordpress.org/news/2025/12/how-to-add-automated-unit-tests-to-your-wordpress-plugin/)󠁿
   
 * By [David Perez](https://profiles.wordpress.org/davidperez/)
 * December 16, 2025
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Plugins](https://developer.wordpress.org/news/category/plugins/),
   [Tools](https://developer.wordpress.org/news/category/tools/)
 * This tutorial shows WordPress plugin developers how to add automated unit testing
   from setup to GitHub integration. Learn to catch bugs before users do, prevent
   regressions in stable code, and build confidence across different WordPress versions
   and configurations.
 * 
   ## 󠀁[The importance of a good changelog](https://developer.wordpress.org/news/2025/11/the-importance-of-a-good-changelog/)󠁿
   
 * By [Anne-Mieke Bovelett](https://profiles.wordpress.org/annebovelett/)
 * November 18, 2025
 * [Advanced](https://developer.wordpress.org/news/category/advanced/)
 * A practical guide on writing changelogs that build trust, reduce confusion, and
   show professionalism, helping you and your users stay confidently informed.
 * 
   ## 󠀁[Building a light/dark toggle with the Interactivity API](https://developer.wordpress.org/news/2025/09/building-a-light-dark-toggle-with-the-interactivity-api/)󠁿
   
 * By [Justin Tadlock](https://profiles.wordpress.org/greenshady/)
 * September 11, 2025
 * [Advanced](https://developer.wordpress.org/news/category/advanced/), [Themes](https://developer.wordpress.org/news/category/themes/)
 * A step-by-step guide in implementing light and dark color schemes for WordPress
   block themes with an interactive toggle button.

1 [2](https://developer.wordpress.org/news/category/advanced/page/2/?output_format=md)
[3](https://developer.wordpress.org/news/category/advanced/page/3/?output_format=md)…
[6](https://developer.wordpress.org/news/category/advanced/page/6/?output_format=md)

 [Next Page](https://developer.wordpress.org/news/category/advanced/page/2/?output_format=md)

## Have an idea for a new post?

### 󠀁[Learn how to contribute](https://developer.wordpress.org/news/how-to-contribute/)󠁿

Share your knowledge with fellow WordPress developers.

Search

### 󠀁[Review tips and guidelines](https://developer.wordpress.org/news/tips-and-guidelines-for-writers/)󠁿

Everything you need to know about writing for the Blog.

## Subscribe to the Blog

  Email Address

 Join 1,771 other subscribers

 * [About](https://wordpress.org/about/)
 * [News](https://wordpress.org/news/)
 * [Hosting](https://wordpress.org/hosting/)
 * [Privacy](https://wordpress.org/about/privacy/)

 * [Showcase](https://wordpress.org/showcase/)
 * [Themes](https://wordpress.org/themes/)
 * [Plugins](https://wordpress.org/plugins/)
 * [Patterns](https://wordpress.org/patterns/)

 * [Learn](https://learn.wordpress.org/)
 * [Documentation](https://wordpress.org/documentation/)
 * [Developers](https://developer.wordpress.org/)
 * [WordPress.tv ](https://wordpress.tv/)

 * [Get Involved](https://make.wordpress.org/)
 * [Events](https://events.wordpress.org/)
 * [Donate ](https://wordpressfoundation.org/donate/)
 * [Swag ](https://mercantile.wordpress.org/)

 * [WordPress.com ](https://wordpress.com/?ref=wporg-footer)
 * [Matt ](https://ma.tt/)
 * [bbPress ](https://bbpress.org/)
 * [BuddyPress ](https://buddypress.org/)

 * [Visit our X (formerly Twitter) account](https://www.x.com/WordPress)
 * [Visit our Bluesky account](https://bsky.app/profile/wordpress.org)
 * [Visit our Mastodon account](https://mastodon.world/@WordPress)
 * [Visit our Threads account](https://www.threads.net/@wordpress)
 * [Visit our Facebook page](https://www.facebook.com/WordPress/)
 * [Visit our Instagram account](https://www.instagram.com/wordpress/)
 * [Visit our LinkedIn account](https://www.linkedin.com/company/wordpress)
 * [Visit our TikTok account](https://www.tiktok.com/@wordpress)
 * [Visit our YouTube channel](https://www.youtube.com/wordpress)
 * [Visit our Tumblr account](https://wordpress.tumblr.com/)

![Code is Poetry](https://s.w.org/style/images/code-is-poetry-for-dark-bg.svg)

 The WordPress® trademark is the intellectual property of the WordPress Foundation.