Playground Meetings Summaries – March 2026

This post summarizes the WordPress Playground team’s biweekly meetings held on March 13 and March 27, 2026. These meetings are open to all contributors and community members.

March 13, 2026

The meeting was facilitated by @fellyph.

Announcements

my.wordpress.net — The team published an official release post for my.wordpress.net and has been collecting community feedback.

Two new blog posts are available on the Playground Blog:

WordPress 7.0 betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 5 is available for testing on Playground. Contributors are encouraged to test their plugins and themes ahead of the next WordPress release at playground.wordpress.net/?wp=beta.

MCP Server — WordPress Playground now has an MCP server. Usage instructions are available on the npm page. A dedicated blog post is in progress.

WASM I/O Conference — Part of the Playground team will be presenting at the WASM I/O conference in Barcelona, March 19–20.

Updates from contributors

Website — Received reliability improvements, including updates to file handling and session persistence, plus integration of the new MCP server.

PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php-WASM — Updated with performance improvements, the new binary optimization strategy, and memory usage fixes.

Docs — Two new guides are now available:

Both guides received translations in Portuguese, Spanish, and French.

CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. — Updates focus on performance and developer experience. A native php command now enables direct script execution and WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/-style workflows. The testing suite now uses local PHARs to remove external download dependencies.

@fellyph — Created the two new guides above, drafted the MCP server blog post, drafted a Vitest guide, and worked on a design proposal for the new Wizard page for my.wordpress.net.


March 27, 2026

The meeting was facilitated by @fellyph.

Announcements

MCP Server post published — The post Connect AI coding agents to WordPress Playground with MCP is now live on the Playground Blog. A video walkthrough is also available.

25 pull requests were merged since the last meeting.

my.wordpress.net — Received significant attention from the media and community. The team thanks everyone who shared feedback. The modal design has been updated, removing the purple background. iOSiOS The operating system used on iPhones and iPads. experience improvements are still under investigation, with thanks to @ashfame and @zaerl for looking into the reported issues.

Website PRs

Improvements focus on resilience and edge-case compatibility: better handling of download failures (#3348), fixes for Playground breaking inside in-app browsers like LinkedIn (#3387, #3392), more flexible blueprint ZIP uploads (#3223), My WordPress branding updates (#3390), and added WebKit and Playwright E2E tests (#3379, #3405).

CLI PRs

The CLI now automatically restarts with JSPI support enabled, without manual Node flags (#3281), and uses a faster built-in method for process checking during temp directory cleanup (#3395). Additional improvements include module-boundary linting (#3410), a new Playwright-based benchmarking suite for site editor startup and interaction times (#3408), and silencing harmless streaming errors caused by client disconnects (#3397).

Docs PRs

GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ Releases are now auto-generated after every npm publish (#3429, #3430). The Claude agent’s permissions have been hardened: rm commands are now blocked (#3398), and allow/deny lists have been updated to prevent destructive actions while permitting read-only git operations (#3373). Dependabot’s config was also fixed to properly exclude directories (#3426).

SQLite

  • #3428 — Updated the SQLite database path from .ht.sqlite to .ht.sqlite.php to match the latest SQLite integration pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party..
  • #3435 — Reverted that path update.

PHP-WASM

  • #3417 — Fixed Redis extension corruption in WASM32 caused by a variadic ABI mismatch.
  • #3399 — Fixed a race condition in proc_open where pipe writes could crash after streams were already closed.

Updates from contributors

@fellyph — Published the E2E Testing with Playwright guide, published the MCP server post, drafted the Vitest guide, and started writing about recent architecture changes.

@brandonpayton and @ashfame — Exploring performance improvements for the Playground CLI, including HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands./2 and static file serving optimizations. @brandonpayton is also focusing on PR reviews.

@adamzielinski — Working on a WordPress site migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. plugin. A working Blueprint with a demo is available. This will be a useful integration for working on existing sites directly within Playground.

@bero — Focused on enabling AI agents to use Playground. A Blueprint skill is now available, and agents will soon be able to interact with the Playground website via playgroundSites methods from DevTools. Experimental WebMCP support is also being added. Next steps include more MCP tools and skills to improve the agent experience.

@janjakes — Back to SQLite work, focusing on monorepo setup, automation, and the upcoming v3 release.

Open floor

@fellyph asked whether contributors prefer a monthly report or a per-meeting report for the Playground newsletter, noting concern about email frequency for subscribers.


The next meeting will be held on April 10, 2026. All are welcome.

Connect AI coding agents to WordPress Playground with MCP

What if your coding agent could read WordPress files, execute PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php, and manage sites directly in your browser? The @wp-playground/mcp package bridges AI coding agents and a browser-based Playground instance through the Model Context Protocol (MCP). Run one command to connect. No configuration needed in Playground.

How it works

The MCP server runs as a local Node.js process using stdio transport. Your AI client communicates with it directly, and the server forwards commands to a Playground instance running in your browser through a WebSocket connection.

AI Client (stdio) --> MCP Server (Node.js) --> WebSocket --> Browser (Playground)

When you open Playground in your browser, a WebSocket links the browser tab to the MCP server. The server assigns a random local port at startup and passes it to the browser through the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org’s mcp-port parameter. The server translates your agent’s tool calls into direct Playground actions: reading files, executing PHP, and navigating pages.

The connection stays local to your machine. Origin restrictions and token-based authentication at startup prevent unauthorized access from other sites and browser extensions.

Set up the MCP server

Claude Code

claude mcp add --transport stdio --scope user wordpress-playground -- npx -y @wp-playground/mcp

The --scope user flag makes the server available across all your projects. Use --scope local to restrict it to the current project only.

Gemini CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress.

gemini mcp add wordpress-playground npx -y @wp-playground/mcp

The default transport is stdio. Use -s user for a user-wide scope.

JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. configuration

You can also configure the server manually. Add this to your .mcp.json (Claude Code / Claude Desktop):

{
    "mcpServers": {
        "wordpress-playground": {
            "type": "stdio",
            "command": "npx",
            "args": ["-y", "@wp-playground/mcp"]
        }
    }
}

Gemini CLI uses the same structure in settings.json but without the "type" field.

After setup, open Playground in your browser. The agent provides the exact URL when it connects.

Three practical workflows

Once connected, your agent manages WordPress through natural language.

1. Install, test and build a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.

Ask your agent to install and verify a plugin without touching the WordPress admin:

“Install the Classic Editor plugin on my Playground site and confirm it deactivates the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor.”

The agent uses playground_execute_php to call wp_remote_get, download the plugin zip, and extract it to wp-content/plugins/. It activates the plugin with activate_plugin(), then fires playground_request against the post editor URL to confirm the classic interface loads. You see each step in your agent’s output.

2. Debug site options with PHP

Need to check what a plugin stored in the database? Skip the admin UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. and query wp_options directly:

“Show me all autoloaded options that contain ‘woocommerce’ in the option name.”

The agent runs playground_execute_php with a short script:

global $wpdb;
$results = $wpdb->get_results(
    "SELECT option_name, option_value FROM $wpdb->options
     WHERE option_name LIKE '%woocommerce%'"
);
print_r($results);

Playground uses SQLite instead of MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com, so avoid MySQL-specific column values in your queries. The $wpdb abstraction handles the translation, but filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. conditions like autoload = 'yes' may not return results as expected.

The output appears in your conversation. No phpMyAdmin or database client needed.

3. Scaffold theme files

Building a child themeChild theme A Child Theme is a customized theme based upon a Parent Theme. It’s considered best practice to create a child theme if you want to modify the CSS of your theme. https://developer.wordpress.org/themes/advanced-topics/child-themes/ from scratch involves creating directories, writing template files, and registering the theme. Let the agent handle the boilerplate:

“Create a child theme of Twenty Twenty-Five called ‘Studio Child’ with a custom headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. template part and a front-page template.”

The agent calls playground_mkdir to create the theme directory, playground_write_file to generate style.css, theme.json, and template files, then playground_execute_php to verify the theme appears in the admin. If a file contains an error, the agent reads it back with playground_read_file and corrects the mistake in the next step.

Available tools

The MCP server exposes these tools to your agent:

  • Site management: playground_get_website_url, playground_list_sites, playground_open_site, playground_rename_site, playground_save_site
  • Code execution: playground_execute_php, playground_request
  • Navigation: playground_navigate, playground_get_current_url, playground_get_site_info
  • Filesystem: playground_read_file, playground_write_file, playground_list_files, playground_mkdir, playground_delete_file, playground_delete_directory, playground_file_exists

Share your feedback

Try the @wp-playground/mcp package and tell us what you build. Share your experience in the #playground channel on Making WordPress Slack or open an issue on GitHub to suggest new tools.

Props to @berislavgrgicak for building the MCP server and reviewing the post.

#ai #playground

+make.wordpress.org/core/
+make.wordpress.org/ai/

How WordPress Playground cut PHP.wasm binary sizes by 122 MB

Every PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php version WordPress Playground supports ships as a WebAssembly binary. Across all builds and versions, those binaries totaled 888 MB. Two compiler flag changes reduced that to 766 MB, a 122 MB saving (13.7%) without removing a single feature.

What changed?

Playground compiles PHP to WebAssembly using Emscripten. The compiler flag MAIN_MODULE controls which symbols get exported for dynamic linking. Previously, Playground used MAIN_MODULE=1, which exports everything, including thousands of symbols that no extension ever calls.

Switching to MAIN_MODULE=2 tells Emscripten to export only the symbols extensions actually use, similar to tree-shaking in JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com bundlers. The compiler drops everything else.

The challenge: keeping extensions alive

Flipping a compiler flag sounds simple, but MAIN_MODULE=2 aggressively eliminates code that the main module considers “dead.” Playground loads extensions like Intl, Xdebug, Memcached, and Redis as dynamic .so modules, and those modules depend on specific symbols from the main PHP binary. Remove the wrong symbol, and the extension crashes on load.

PR #3244 first mapped the approach: scanning each compiled extension wasm-dis to extract which symbols it references. The build system then feeds those symbols back to the linker as explicit exports, keeping every extension working while eliminating thousands of unused ones.

Three extensions required direct fixes. Xdebug required a __c_longjmp WebAssembly tag injection. Memcached called recv and setsockopt through libmemcached internals, so the build added C shim wrappers. Intl alone needed over 5,000 export symbols, including libc++ functions.

Why two build types?

PHP is synchronous. Browsers are not. Playground solves this mismatch with two compilation strategies, and each one produces a separate set of binaries:

  • Asyncify transforms compiled code at build time so it can pause and resume execution. This approach works in every browser but adds overhead to the binary. Learn more about Asyncify.
  • JSPI (JavaScript Promise Integration) takes a different approach. It lets WebAssembly call async browser APIs directly, without transforming the compiled code. JSPI produces smaller binaries but currently requires V8-based browsers (Chrome, Edge). Learn more about JSPI.

Playground ships both variants for each PHP version, so the MAIN_MODULE=2 optimization is applied to both:

  • PR #3332 targeted JSPI builds.
  • PR #3335 completed the same change for Asyncify builds.

The numbers

MetricBeforeAfterSaved
Total binary size888 MB766 MB122 MB (13.7%)
.wasm files680 MB571 MB109 MB (16%)
JS glue code22.7 MB8.2 MB14.5 MB (63%)

Per-version .wasm sizes dropped consistently across all supported PHP versions:

PHP VersionBefore (avg)After (avg)Reduction
7.4~20 MB~17 MB17-19%
8.2~25 MB~21 MB15-17%
8.4~27 MB~23 MB14-16%
8.5~28 MB~24 MB14-15%

The two PRs combined removed 554,793 lines of JavaScript glue code across all builds.

Why smaller binaries matter

Faster downloads and CI. 122 MB fewer bytes to transfer during repository clones, CI pipelines, and deployments. That adds up across all contributors and all automated runs.

Faster WebAssembly instantiation. Smaller .wasm files compile faster in the browser. Compilation cost scales roughly with binary size, so 16% smaller binaries translate directly to faster WordPress startup.

Lower memory usage. Fewer exported symbols produce a smaller function table. The runtime allocates less memory before PHP even starts.

Faster JavaScript parsing. 63% less JS glue code means the browser parses and evaluates significantly less JavaScript before handing control to PHP.

What this means for php-wasm packages

Version-specific packages like @php-wasm/web-8.4 and @php-wasm/node-8.4 ship lighter binaries. No APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. changes — this is purely a build optimization. Existing code that depends on these packages works unchanged.

What comes next

The next step is to benchmark the runtime impact by measuring instantiation time, time-to-first-PHP-response, and memory usage across builds. Those numbers will confirm how the smaller binaries translate to real-world performance gains.

Props to @mho22 for implementing both PRs and reviewing the post, @brandonpayton for reviewing, and @adamziel for the architectural direction. See the full details in PR #3332 and PR #3335.

Playground Meetings Summaries – February 2026

This post covers the two Playground meetings held in February 2026. These are bi-weekly chats where contributors to WordPress Playground gather to discuss updates, ongoing work, and plans for current and future releases. All are welcome to join.

Meeting 1 – February 13, 2026

Facilitator: Fellyph Cintra

Announcements

Three posts worth highlighting from the past weeks:

  • wp-env now runs WordPress with Playground runtime — WordPress Playground is now available in wp-env as an alternative to Docker.
  • What’s new for developers? (February 2026) — A roundup of developer-focused updates from the beginning of the year, including several Playground highlights.
  • WordPress Studio 1.7.0 received substantial CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. updates — nearly every feature is now controllable from the command line, improving compatibility with AI-assisted development tools such as Claude Code and Cursor.

Documentation

Three documentation pull requests landed since the last meeting:

  • #3188 — Refreshes screenshots and rewrites content for the web instance page to reflect the latest UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing..
  • #3242 — Updates the “Host Your Own Playground” self-hosting page with current instructions and improved clarity.
  • #3103 — Adds a new beginner-friendly “Playground for Everyone” guide explaining what WordPress Playground is and how anyone can use it.

Translations

New translations were added for Bengali and Japanese. Thank you to @noruzzaman and @shimomura tomoki for their contributions.

  • #3177 — Updates translations.md for multiple languages.
  • #3249, #3230, #3229, #3231 — Bengali translations for several guides and documentation pages.
  • #3228 — Japanese translations for developer architecture, PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php, and browser-concepts pages.

Other notable changes

  • Website — A new URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org route enables deep-linking directly to the Blueprint Gallery overlay using the ?overlay=blueprints parameter.
  • CLI — A new --phpmyadmin flag spins up a phpMyAdmin instance for inspecting and managing the SQLite database from the command line.
  • Blueprints — Removed an unnecessary dependency on @php-wasm/web from the blueprints package, reducing bundle size and decoupling the two packages.
  • Safari — Multiple improvements shipped following community feedback shared on X.

In total, 32 pull requests were merged since the last meeting.

Updates from contributors

  • Fellyph Cintra — Researching the migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. of Playground documentation to the .org Handbook, documenting the process of integrating Playground with code agents, and submitting a new skill for blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. pattern creation to the WordPress repository.
  • Brandon Payton — Continuing work on making multi-worker mode non-experimental in the Playground CLI, with expanded test coverage now running on Windows, macOS, and Linux.
  • Jan Jakes (@janjakes) — Added phpMyAdmin support to the Playground CLI. Try it with npx @wp-playground/cli@latest server --phpmyadmin. An overview post on the SQLite side is also coming soon.
  • Adam Zieliński — Working on importing WordPress sites between hosts, which will enable moving sites between Playground instances and hosted environments.

Open floor

Fellyph shared a demo of WordPress Playground used together with Claude Code and the DevTools MCP server, highlighting how Claude Code decides whether to fix code directly or use the Site Editor to fulfill requests. The team is curious to hear from the community: are you using Playground with code agents, and what has your experience been like?

If you are interested in contributing to the documentation migration to the .org Handbook, reach out to Fellyph directly via SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ DM.


Meeting 2 – February 27, 2026

Facilitator: Fellyph Cintra

Announcements

The team is currently investigating stability issues affecting WordPress Playground with WordPress 7.0 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. and GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ v22.6.0. Two related pull requests are in progress:

  • #3312 — Avoids cross-origin policy errors in the editor.
  • #3301 — Fixes a blank /wp-admin page caused by responses crossing the Comlink worker boundary.

Thanks to everyone who reported issues — your feedback helped with the investigation. More fixes are expected in the coming days.

Two posts were published this week:

WordPress 7.0 Beta 2 is now available for testing on WordPress Playground. If you encounter any issues, please report them on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/.

Project updates

22 pull requests have been merged since the last meeting. New feature work was paused to focus on WordPress 7.0 stability investigations.

CLI

  • #3288 — Removes a duplicated “Playground CLI Ready” log line to keep startup output clean.
  • #3238 — Detects “port already in use” errors and returns a clear, actionable message.
  • #3150 — Fixes Windows native file-locking issues in the multi-threaded CLI architecture.

PHP.wasm

  • #3287 — Adds PHP function names and refactors the test suite to improve coverage and maintainability.
  • #3234 — Adds a cp (copy) method to Universal PHP for file duplication via the PHP.wasm filesystem APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..

Translations

New translations were added for Bengali and Japanese. Thank you to @noruzzaman and @shimomura tomoki for their continued contributions.

Documentation

Updates from contributors

  • Fellyph Cintra — Migrating the documentation to the .org Handbook, working on the Agent Skill guide and the two CLI posts. Started testing Playground with Claude Code and Gemini HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.; a post about it is coming soon.
  • Jan Jakes (@janjakes) — Improving the agentic experience and setup for Playground and SQLite integration, and investigating performance and memory consumption.
  • Yannick Decat — Compiling PHP.wasm with MAIN_MODULE=2 to reduce .wasm and .js file sizes, and implementing path mappings and path skipping in Xdebug 3.5. Also experimenting with Xdebug in the browser.
  • Bero — Working on an MCP server for the Playground website, including WebMCP support.
  • Adam Zieliński — The WordPress site migrator is working. Next steps include URL rewriting for cross-domain moves and Playground integration.

Open floor

The team discussed what tools would be most useful in an MCP server for Playground. If you have ideas, share them in the comments below or on the relevant GitHub pull requests.

The next Playground chat will be on March 10th in the #playground Slack channel. All are welcome to join.

Simplify your workflow with the new Playground CLI start command

Setting up a local WordPress environment should be as simple as running a single command. We are excited to introduce the new start command in the WordPress Playground CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress., simplifying how you run your local environments.

A simpler way to start

The WordPress Playground CLI is a powerful tool for running WordPress in your terminal. The command server allows users to customize the Playground instance at several levels, but those customizations can be daunting for users who want to run a WordPress instance with a theme/pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.. With the introduction of the high-level start command (introduced in PR #3040), you can launch a local WordPress instance more intuitively.

Instead of configuring complex parameters, you can now run:

npx @wp-playground/cli start

This command automatically configures the environment with sensible defaults, so you can focus on building.

Persistence by default

The most significant update in this release is persistence (PR #3119). Previously, closing the CLI meant losing your database and file changes unless you manually configured mounts. This update is a major milestone toward simplifying the WordPress development ecosystem. By adding persistence and a high-level entry point, the Playground CLI achieves feature parity with wp-now.

Now, the start command automatically saves your site’s state in your home directory (~/.wordpress-playground/sites/). This ensures your plugins, themes, and content are preserved between sessions. You can stop your server and resume exactly where you left off.

Quick reset for a fresh start

Sometimes, you need to start over. If you want to wipe your persisted site and begin with a clean installation, use the --reset flag:

npx @wp-playground/cli start --reset

Other flags are available for the `start` command:

  • --blueprint — Execute a Blueprint file to preconfigure your site with plugins, themes, settings, and content.
  • --php — Choose your PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php version. Supported versions: 7.4, to 8.5. Defaults to 8.3.
  • --wp — Set the WordPress version. Defaults to latest.
  • --port — Define the port for the local server. Defaults to 9400.
  • --login — Automatically log in to the WordPress dashboard on launch.

Get started

The start command is available now in the latest version of @wp-playground/cli. Whether you’re testing a new plugin or building a theme, the Playground CLI provides a lightweight, zero-config environment directly in your terminal.

To learn more, check the Playground CLI documentation.

Manage your database directly from the Playground CLI

Need to inspect WordPress data, debug a query, or check if a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. saved options correctly? The Playground CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. now includes a --phpmyadmin flag that launches phpMyAdmin alongside your local WordPress instance. No extra setup, no separate database server, just one command.

Where is your data?

When developing locally with Playground CLI, you often need to verify what the database actually contains. Until now, doing that required writing custom PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php queries or adding debug output to your code.

The --phpmyadmin flag solves this by giving you a full phpMyAdmin interface right from the CLI.

Getting started

Add --phpmyadmin to your regular CLI command:

npx @wp-playground/cli@latest server --phpmyadmin

After WordPress boots, the CLI prints the phpMyAdmin URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org:

WordPress Playground CLI

PHP 8.3  WordPress latest
Extensions intl

Ready! WordPress is running on http://127.0.0.1:9400 (11 workers)

phpMyAdmin available at http://127.0.0.1:9400/phpmyadmin/index.php?route=/database/structure&db=wordpress

Open that URL in your browser, and you get full access to browse tables, run SQL queries, and inspect your WordPress data:

Custom URL path

By default, phpMyAdmin serves at /phpmyadmin. Change this path to anything you prefer:

npx @wp-playground/cli@latest server --phpmyadmin=/my-db

This serves phpMyAdmin at http://127.0.0.1:9400/my-db/index.php instead.

Combine with other CLI flags

The --phpmyadmin flag works alongside all existing CLI options:

Test a plugin and inspect its database changes

npx @wp-playground/cli@latest server --phpmyadmin --auto-mount

Run this from your plugin directory. Playground mounts your plugin automatically, and phpMyAdmin lets you verify the database tables and options your plugin creates.

Pin a specific WordPress and PHP version

npx @wp-playground/cli@latest server --phpmyadmin --wp=latest --php=8.5

Useful when you need to check how your plugin handles data across different WordPress versions.

Use a Blueprint with phpMyAdmin

npx @wp-playground/cli@latest server --phpmyadmin --blueprint=my-blueprint.json

Combine Blueprints with phpMyAdmin to pre-configure your WordPress instance and then inspect the resulting database state.

Cache phpMyAdmin for faster starts

Each time you use --phpmyadmin, Playground downloads and installs phpMyAdmin into the instance. To skip the download on subsequent runs, mount a local directory to cache the files:

mkdir -p ./pma-cache
npx @wp-playground/cli@latest server --phpmyadmin --mount ./pma-cache:/tools/phpmyadmin

The first run populates ./pma-cache with the phpMyAdmin files. On every subsequent run, Playground detects the existing installation and skips the download.

Where this helps

Here are some practical scenarios where --phpmyadmin saves time:

  • Plugin development: Verify that your plugin creates the correct custom tables and stores data in the expected format.
  • Debugging options: Check wp_options directly to confirm your plugin settings saved correctly, without writing get_option() debug code.
  • Content migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. testing: Import content via a Blueprint and verify the resulting posts, terms, and metadata in the database.
  • Learning WordPress internals: Explore how WordPress organizes its database tables — see how posts relate to postmeta, how taxonomies link to terms, and how user data connects across tables.
  • SQL query testing: Run raw SQL queries against your test data before embedding them in your plugin code.

How it works under the hood

phpMyAdmin installs at /tools/phpmyadmin on the virtual filesystem — outside the WordPress document root at /wordpress. The CLI uses a path alias (similar to NginxNGINX NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers. https://www.nginx.com/.’s alias directive) to serve it at your chosen URL path. This design keeps phpMyAdmin files separate from your WordPress installation, so they never appear in site exports or interfere with your project files.

Since Playground uses SQLite instead of MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com, phpMyAdmin connects through a custom MySQL-on-SQLite driver that translates queries between the two dialects.

Share your feedback

The phpMyAdmin integration in the CLI came from the same effort that brought the Database panel to the Playground web interface. If you run into issues or have suggestions, share them on the Making WordPress Slack or open an issue on GitHub.

Props to @JanJakes for reviewing this post.

wp-env now runs WordPress with Playground runtime

wp-env is one of the alternatives to run a WordPress Environment; by default, it uses Docker. What if you could run a full WordPress development environment without installing Docker? With the new experimental Playground runtime for wp-env, you can.

One command. Zero Docker. Full WordPress:

npx @wordpress/env start --runtime=playground

This launches a complete WordPress environment in seconds using Node.js.

Why does this matter?

The Playground runtime offers a lightweight alternative for WordPress development. No extra software installation required; if you have Node.js, you’re ready to go.

What makes the Playground runtime appealing:

  • Zero additional installation – Just Node.js, no Docker setup needed
  • Lightweight bundle – WordPress Playground runs lean with minimal resource usage
  • Fast startup – Get a running WordPress instance in seconds
  • Works everywhere Node.js runs – Linux, macOS, Windows, CI pipelines

What works in both runtimes?

The good news: most wp-env features work identically in both runtimes. Here’s the official comparison:

FeatureDockerPlayground
PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party./theme mounting
Custom PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php versions
Xdebug support
MultisiteMultisite Multisite is a WordPress feature which allows users to create a network of sites on a single WordPress installation. Available since WordPress version 3.0, Multisite is a continuation of WPMU or WordPress Multiuser project. WordPress MultiUser project was discontinued and its features were included into WordPress core. Advanced Administration Handbook -> Create A Network.✅ (experimental)
MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com database❌ (SQLite)
phpMyAdmin❌ (planned)
SPX profiling
Separate tests environment
wp-env run command

The Playground runtime uses SQLite instead of MySQL. For most WordPress development, you won’t notice the difference; your plugins and themes work the same way.

Multisite support is available but hasn’t been extensively tested yet, so treat it as experimental for now.

phpMyAdmin is not yet supported in the Playground runtime. Once it becomes available in the Playground CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress., wp-env will integrate it. You can already use phpMyAdmin directly with the Playground CLI:

npx @wp-playground/cli server --phpmyadmin              # serves at http://127.0.0.1:9400/phpmyadmin
npx @wp-playground/cli server --phpmyadmin=/custom-path # serves at http://127.0.0.1:9400/custom-path

What about my existing configuration?

The Playground runtime supports most existing .wp-env.json configuration files:

{
  "core": "WordPress/WordPress#6.8",
  "plugins": ["./my-plugin"],
  "themes": ["./my-theme"],
  "phpVersion": "8.2"
}

This configuration works with both runtimes. Once you start wp-env with a specific runtime, wp-env remembers your choice. Subsequent commands wp-env stop automatically use the same runtime. To switch runtimes, destroy the environment with wp-env destroy and start fresh with your preferred runtime flag.

When should you still use Docker?

The Playground runtime is experimental. Choose Docker when you need:

  • A separate test environment – Docker’s wp-env creates an isolated instance for running tests
  • The wp-env run command – Execute arbitrary commands inside the environment
  • MySQL database – Some plugins require MySQL-specific features that SQLite doesn’t support
  • SPX profiling – Performance profiling with the SPX extension
  • SSHSSH Secure SHell - a protocol for securely connecting to a remote system in addition to or in place of a password. access – Shell into the environment directly

For development workflows that require deep environment access, running WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ commands inside the environment, debugging PHP processes, or customizing the server stack, Docker remains the right choice.

Resources:

Share your feedback

This feature is experimental, and your feedback shapes its direction. Does it work for your workflow? What’s missing? What breaks?

Share your experience at #playground SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ channel.

Props to Riad Benguella(@youknowriad) for announcing and advocating this feature, and to Jan Jakeš(@janjakes) for his work on phpMyAdmin and the Playground CLI.

WordPress Playground Team Meeting Summary: January 23, 2026

Facilitator: @fellyph

The Playground team held its weekly meeting on January 23, 2026, in the  #playground SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ channel. Here’s a summary of the discussion.

Announcements

PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php version support update: WordPress Playground has dropped support for PHP 7.2 and 7.3. While this change is scheduled for WordPress 7.0, Playground has implemented it early. See the Playground blog for details.

AI agent skills: @bpayton has created an Agent Skill for testing WordPress applications on Playground. An announcement post is in progress. The team encourages community testing and contributions. Additionally, Automattic has released a set of Agent Skills, including one for Playground.

Newsletter: The Playground blog now offers a newsletter subscription. Sign up via the form on the blog sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. to receive updates.

Contributors: The Playground project now has 53 members with the Playground Contributor Badge.

Translations: Thanks to @noruzzaman for submitting Bengali pages and @Béryl for reviewing French translations. Contact @fellyph if you want to get involved.

Project Updates

  • Personal Playground: @akirk is developing Personal Playground, a new feature currently in review. Feedback is welcome on the PR.
  • PHP synchronous connect(): A PR simplifies connection logic for Asyncify builds by replacing asynchronous approaches with synchronous connections.
  • Node.js upgrade: The project has upgraded from Node.js 20 to 22, enabling package updates.
  • Agent documentation: The project has added a CLAUDE.md file. The team discussed renaming it to AGENTS.md for broader compatibility with tools like Gemini CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress., Cursor, and Copilot. The proposed solution is to use AGENTS.md as the main file with CLAUDE.md referencing it.
  • Image optimization: @fellyph updated all PNG images in the documentation to WebP, reducing image sizes by 78%.

Updates from Contributors

  • @zieladam: Helping @akirk review and merge the “My WordPress” project before February. Shipped Redis and Memcached extensions and added native DNSDNS DNS is an acronym for Domain Name System - how you assign a human readable address to a website’s exact numeric coded location (ie. wordpress.org uses the actual IP address 198.143.164.252). resolution for the JSPI Node.js flavor of Playground.
  • @fellyph: Working on CSSCSS CSS is an acronym for cascading style sheets. This is what controls the design or look and feel of a site. improvements and CSS tokens for the Playground website. Created a PR to add translation credit footers.
  • @bph: Published two blog posts for theme developers:
  • @bpayton: Working on stabilizing the experimental multi-workers feature to remove the “experimental” flag and improve default performance.

Open Floor

The team briefly discussed CSS tokens and whether anyone has used the CSS tokens from @wordpress/theme.

The next Playground meeting is scheduled for the 13th of February 2026. Join the conversation at #playground Slack channel.

#meeting

WordPress Playground removes support for PHP 7.2 and 7.3

WordPress Playground no longer supports PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. https://www.php.net/manual/en/preface.php 7.2 and 7.3. The minimum PHP version is now 7.4.

Your existing Blueprints will continue to work. If a Blueprint requests PHP 7.2 or 7.3, Playground automatically upgrades it to PHP 7.4 and displays a warning. No action is required, but you should update your Blueprints when convenient.

Why now?

Three factors drove this decision:

  • WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. is moving forward. WordPress 7.0 (releasing April 2026) drops support for PHP 7.2 and 7.3. These versions now power less than 4% of WordPress sites combined—well below the 5% threshold the project uses for version support decisions.
  • These versions don’t work reliably in Playground. PHP 7.2 crashes after a minute or two of use. PHP 7.3 runs noticeably slower than newer versions. These issues existed for months without user reports, confirming low adoption.  Also, they don’t seem to work with the PROXYFS mmap implementation
  • Maintenance takes time away from improvements. Supporting older PHP versions requires workarounds that delay features everyone can use—like fixing the intl extension crash.

What you need to do

For most users: nothing. Playground handles the migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. automatically. Blueprint compilation requires PHP 7.4 or later; a warning will be displayed to remove it and update your Blueprint to load a supported version. If you are using the modular loaders, versions 7.2 and 7.3 will not receive updates.

Supported PHP versions

Playground now supports PHP 7.4 through PHP 8.5:

VersionStatus
PHP 7.4Supported (minimum)
PHP 8.0Supported
PHP 8.1Supported
PHP 8.2Supported
PHP 8.3Supported (recommended)
PHP 8.4Supported
PHP 8.5Supported

Use latest In your Blueprint, always get the most recent stable PHP version.

Timeline

This change takes effect immediately in WordPress Playground. The automatic upgrade ensures backward compatibility—your existing Blueprints won’t break.

WordPress Core follows in April 2026 with WordPress 7.0, which sets PHP 7.4 as the minimum required version.

Questions?

Reach out in the #playground channel on WordPress.org Slack or open a GitHub issue.