Title: WordPress Playground for Plugin Developers
Published: July 15, 2026
Last modified: July 16, 2026

---

# WordPress Playground for Plugin Developers

## In this article

 * [Launching a Playground instance with a plugin](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#launching-a-playground-instance-with-a-plugin)
    - [Plugin in the WordPress plugins directory](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-in-the-wordpress-plugins-directory)
    - [Plugin in a GitHub repository](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-in-a-github-repository)
    - [Plugin from code in a file or gist in GitHub](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-from-code-in-a-file-or-gist-in-github)
 * [Setting up a demo for your plugin with Blueprints](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#setting-up-a-demo-for-your-plugin-with-blueprints)
    - [plugins](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugins)
    - [landingPage](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#landingpage)
    - [writeFile](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#writefile)
 * [Plugin Development](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-development)
    - [Local plugin development and testing with Playground](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#local-plugin-development-and-testing-with-playground)
    - [See your local changes in a Playground instance and directly create PRs in a GitHub repo with your changes](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#see-your-local-changes-in-a-playground-instance-and-directly-create-prs-in-a-github-repo-with-your-changes)

[ Back to top](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#wp--skip-link--target)

The WordPress Playground is an innovative tool that allows plugin developers to 
build, test and showcase their plugins directly in a browser environment.

This guide will show you how to use WordPress Playground to improve your plugin 
development workflow, create live demos to showcase your plugin, and simplify your
plugin testing and review.

Discover how to [Build](https://developer.wordpress.org/playground/about/build),
[Test](https://developer.wordpress.org/playground/about/test), and [Launch](https://developer.wordpress.org/playground/about/launch)
your products with WordPress Playground in the [About Playground](https://developer.wordpress.org/playground/about)
section.

## 󠀁[Launching a Playground instance with a plugin](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#launching-a-playground-instance-with-a-plugin)󠁿

### 󠀁[Plugin in the WordPress plugins directory](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-in-the-wordpress-plugins-directory)󠁿

With WordPress Playground, you can quickly launch a WordPress installation with 
almost any plugin available in the [WordPress Plugins Directory](https://wordpress.org/plugins/)
installed and activated. All you need to do is to add the `plugin` [query parameter](https://developer.wordpress.org/playground/developers/apis/query-api)
to the [Playground URL](https://playground.wordpress.net) and use the slug of the
plugin from the WordPress directory as a value. For example: https://playground.
wordpress.net/?plugin=create-block-theme

You can install and activate several plugins via query parameters by repeating the`
plugin` parameter for every plugin you want to be installed and activated in the
Playground instance. For example: [https://playground.wordpress.net/?plugin=gutenberg&plugin=akismet&plugin=wordpress-seo](https://playground.wordpress.net/?plugin=gutenberg&plugin=akismet&plugin=wordpress-seo).

You can also load any plugin from the WordPress plugins directory by setting the
[`installPlugin` step](https://developer.wordpress.org/playground/blueprints/steps#InstallPluginStep)
of a [Blueprint](https://developer.wordpress.org/playground/blueprints/getting-started)
passed to the Playground instance.

    ```language-json
    {
        "landingPage": "/wp-admin/plugins.php",
        "login": true,
        "steps": [
            {
                "step": "installPlugin",
                "pluginData": {
                    "resource": "wordpress.org/plugins",
                    "slug": "gutenberg"
                }
            }
        ]
    }
    ```

[Run Blueprint](https://playground.wordpress.net/builder/builder.html#{%22landingPage%22:%22/wp-admin/plugins.php%22,%22login%22:true,%22steps%22:[{%22step%22:%22installPlugin%22,%22pluginData%22:{%22resource%22:%22wordpress.org/plugins%22,%22slug%22:%22gutenberg%22}}]})

Blueprints can be passed to a Playground instance [in several ways](https://developer.wordpress.org/playground/blueprints/using-blueprints).

### 󠀁[Plugin in a GitHub repository](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-in-a-github-repository)󠁿

A plugin stored in a GitHub repository can also be loaded in a Playground instance
via Blueprints.

With the `pluginData` property of the [`installPlugin` blueprint step](https://developer.wordpress.org/playground/blueprints/steps#installPlugin),
you can define a [`git:directory` resource](https://developer.wordpress.org/playground/blueprints/steps/resources#gitdirectoryreference)
that will build a plugin from the files from a repository in the Playground instance.

Use the [`git:directory` resource](https://developer.wordpress.org/playground/blueprints/steps/resources#gitdirectoryreference)
to load plugin source code from a Git repository. It supports branches, tags, commits,
and subdirectories without requiring you to create a ZIP archive first. If your 
plugin needs a Composer, npm, or other build step, publish a built ZIP artifact 
and install that artifact with a `url` resource instead.

For example, the following `blueprint.json` installs a plugin from a GitHub repository:

    ```language-json
    {
        "landingPage": "/wp-admin/admin.php?page=add-media-from-third-party-service",
        "login": true,
        "steps": [
            {
                "step": "installPlugin",
                "pluginData": {
                    "resource": "git:directory",
                    "url": "https://github.com/wptrainingteam/devblog-dataviews-plugin",
                    "ref": "HEAD",
                    "refType": "refname"
                }
            }
        ]
    }
    ```

If your plugin is hosted on GitHub, you can automatically add preview buttons to
your pull requests using the Playground PR Preview GitHub Action. This lets reviewers
test your changes instantly without any setup. See [Adding PR Preview Buttons with GitHub Actions](https://developer.wordpress.org/playground/guides/github-action-pr-preview)
for details.

[Run Blueprint](https://playground.wordpress.net/#{%22landingPage%22:%22/wp-admin/admin.php?page=add-media-from-third-party-service%22,%22login%22:true,%22steps%22:[{%22step%22:%22installPlugin%22,%22pluginData%22:{%22resource%22:%22git:directory%22,%22url%22:%22https://github.com/wptrainingteam/devblog-dataviews-plugin%22,%22ref%22:%22HEAD%22,%22refType%22:%22refname%22}}],%22$schema%22:%22https://playground.wordpress.net/blueprint-schema.json%22,%22meta%22:{%22title%22:%22Empty%20Blueprint%22,%22author%22:%22https://github.com/akirk/playground-step-library%22}})

### 󠀁[Plugin from code in a file or gist in GitHub](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-from-code-in-a-file-or-gist-in-github)󠁿

By combining the [`writeFile`](https://developer.wordpress.org/playground/blueprints/steps#WriteFileStep)
and [`activatePlugin`](https://developer.wordpress.org/playground/blueprints/steps#activatePlugin)
steps you can also launch a WP Playground instance with a plugin built on the fly
from code stored on a gist or [a file in GitHub](https://raw.githubusercontent.com/WordPress/blueprints/trunk/blueprints/custom-post/books.php):

    ```language-json
    {
        "landingPage": "/wp-admin/plugins.php",
        "login": true,
        "steps": [
            {
                "step": "login"
            },
            {
                "step": "writeFile",
                "path": "/wordpress/wp-content/plugins/cpt-books.php",
                "data": {
                    "resource": "url",
                    "url": "https://raw.githubusercontent.com/WordPress/blueprints/trunk/blueprints/custom-post/books.php"
                }
            },
            {
                "step": "activatePlugin",
                "pluginPath": "cpt-books.php"
            }
        ]
    }
    ```

[Run Blueprint](https://playground.wordpress.net/builder/builder.html#{%22landingPage%22:%22/wp-admin/plugins.php%22,%22login%22:true,%22steps%22:[{%22step%22:%22login%22},{%22step%22:%22writeFile%22,%22path%22:%22/wordpress/wp-content/plugins/cpt-books.php%22,%22data%22:{%22resource%22:%22url%22,%22url%22:%22https://raw.githubusercontent.com/WordPress/blueprints/trunk/blueprints/custom-post/books.php%22}},{%22step%22:%22activatePlugin%22,%22pluginPath%22:%22cpt-books.php%22}]})

The [Install plugin from a gist](https://playground.wordpress.net/builder/builder.html?blueprint-url=https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/install-plugin-from-gist/blueprint.json#{%22meta%22:{%22title%22:%22Install%20plugin%20from%20a%20gist%22,%22author%22:%22zieladam%22,%22description%22:%22Install%20and%20activate%20a%20WordPress%20plugin%20from%20a%20.php%20file%20stored%20in%20a%20gist.%22,%22categories%22:[%22plugins%22]},%22landingPage%22:%22/wp-admin/plugins.php%22,%22preferredVersions%22:{%22wp%22:%22beta%22,%22php%22:%228.0%22},%22steps%22:[{%22step%22:%22login%22},{%22step%22:%22writeFile%22,%22path%22:%22/wordpress/wp-content/plugins/0-plugin.php%22,%22data%22:{%22resource%22:%22url%22,%22url%22:%22https://gist.githubusercontent.com/ndiego/456b74b243d86c97cda89264c68cbdee/raw/ff00cf25e6eebe4f5a4eaecff10286f71e65340b/block-hooks-demo.php%22}},{%22step%22:%22activatePlugin%22,%22pluginName%22:%22Block%20Hooks%20Demo%22,%22pluginPath%22:%220-plugin.php%22}]})
example in the [Blueprints Gallery](https://github.com/WordPress/blueprints/blob/trunk/GALLERY.md)
shows how to load a plugin from code in a gist

## 󠀁[Setting up a demo for your plugin with Blueprints](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#setting-up-a-demo-for-your-plugin-with-blueprints)󠁿

When providing a link to a WordPress Playground instance with some plugins activated,
you may also want to customize the initial setup for that Playground instance using
those plugins. With Playground’s [Blueprints](https://developer.wordpress.org/playground/blueprints/getting-started)
you can load/activate plugins and configure the Playground instance.

Some useful tools and resources provided by the Playground project to work with 
blueprints are:

 * Check the [Blueprints Gallery](https://github.com/WordPress/blueprints/blob/trunk/GALLERY.md)
   to explore real-world code examples of using WordPress Playground to launch a
   WordPress site with a variety of setups.
 * The [WordPress Playground Step Library](https://akirk.github.io/playground-step-library/#)
   tool provides a visual interface to drag or click the steps to create a blueprint
   for WordPress Playground. You can also create your own steps!
 * The [Blueprints builder](https://playground.wordpress.net/builder/builder.html)
   tool allows you edit your blueprint online and run it directly in a Playground
   instance.

Through properties and [`steps`](https://developer.wordpress.org/playground/blueprints/steps)
in the Blueprint, you can configure the Playground instance’s initial setup, providing
your plugins with the content and configuration needed for showcasing your plugin’s
compelling features and functionality.

A great demo with WordPress Playground might require that you load default content
for your plugin and theme, including images and other assets. Check out the [Providing content for your demo](https://developer.wordpress.org/playground/guides/providing-content-for-your-demo)
guide to learn more about this.

### 󠀁[plugins](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugins)󠁿

If your plugin has dependencies on other plugins you can use the `plugins` shorthand
to install yours along with any other needed plugins.

    ```language-json
    {
        "landingPage": "/wp-admin/plugins.php",
        "plugins": ["gutenberg", "sql-buddy", "create-block-theme"],
        "login": true
    }
    ```

[Run Blueprint](https://playground.wordpress.net/builder/builder.html#{%22landingPage%22:%22/wp-admin/plugins.php%22,%22plugins%22:[%22gutenberg%22,%22sql-buddy%22,%22create-block-theme%22],%22login%22:true})

### 󠀁[landingPage](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#landingpage)󠁿

If your plugin has a settings view or onboarding wizard, you can use the `landingPage`
shorthand to automatically redirect to any page in the Playground instance upon 
loading.

    ```language-json
    {
        "landingPage": "/wp-admin/admin.php?page=my-custom-gutenberg-app",
        "login": true,
        "plugins": ["https://raw.githubusercontent.com/WordPress/block-development-examples/deploy/zips/data-basics-59c8f8.zip"]
    }
    ```

[Run Blueprint](https://playground.wordpress.net/builder/builder.html#{%22landingPage%22:%22/wp-admin/admin.php?page=my-custom-gutenberg-app%22,%22login%22:true,%22plugins%22:[%22https://raw.githubusercontent.com/WordPress/block-development-examples/deploy/zips/data-basics-59c8f8.zip%22]})

### 󠀁[writeFile](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#writefile)󠁿

With the [`writeFile` step](https://developer.wordpress.org/playground/blueprints/steps#writeFile)
you can create any plugin file on the fly, referencing code from a *.php file stored
on a GitHub or Gist.

Here’s an example of a **[plugin that generates Custom Post Types](https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/custom-post/books.php)**,
placed in the `mu-plugins` folder to ensure the code runs automatically on load:

    ```language-json
    {
        "landingPage": "/wp-admin/",
        "login": true,
        "steps": [
            {
                "step": "writeFile",
                "path": "/wordpress/wp-content/mu-plugins/books.php",
                "data": {
                    "resource": "url",
                    "url": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/custom-post/books.php"
                }
            }
        ]
    }
    ```

## 󠀁[Plugin Development](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#plugin-development)󠁿

### 󠀁[Local plugin development and testing with Playground](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#local-plugin-development-and-testing-with-playground)󠁿

From a plugins’ folder in your local development environment, you can quickly load
locally a Playground instance with that plugin loaded and activated.

Use the [`@wp-playground/cli` command](https://developer.wordpress.org/playground/developers/local-development/wp-playground-cli)
from your plugin’s root directory using your preferred command line program.

With [Visual Studio Code](https://code.visualstudio.com/) IDE, you can also use 
the [Visual Studio Code extension](https://developer.wordpress.org/playground/developers/local-development/vscode-extension)
while working in the root directory of your plugin.

For example:

    ```bash
    git clone git@github.com:wptrainingteam/devblog-dataviews-plugin.git
    cd devblog-dataviews-plugin
    npx @wp-playground/cli server --auto-mount
    ```

### 󠀁[See your local changes in a Playground instance and directly create PRs in a GitHub repo with your changes](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#see-your-local-changes-in-a-playground-instance-and-directly-create-prs-in-a-github-repo-with-your-changes)󠁿

With Google Chrome you can synchronize a Playground instance with your local plugin’s
code and your plugin’s GitHub repo. With this connection you can:

 * See live (in the Playground instance) your local changes
 * Create PRs in the GitHub repo with your changes

Here’s a little demo of this workflow in action:

Check [About Playground > Build > Synchronize your playground instance with a local folder and create GitHub Pull Requests](https://developer.wordpress.org/playground/about/build#synchronize-your-playground-instance-with-a-local-folder-and-create-github-pull-requests)
for more info.

First published

July 15, 2026

Last updated

July 16, 2026

Edit article

[ Improve it on GitHub: WordPress Playground for Plugin Developers ](https://raw.githubusercontent.com/WordPress/wordpress-playground/trunk/packages/docs/site/docs/main/guides/for-plugin-developers.md)

Changelog

[ See list of changes: WordPress Playground for Plugin Developers ](https://developer.wordpress.org/playground/handbook/guides/for-plugin-developers/?output_format=md#)

[  Previous: WordPress Playground in native iOS apps](https://developer.wordpress.org/playground/handbook/guides/wordpress-native-ios-app/)

[  Next: WordPress Playground for Theme Developers](https://developer.wordpress.org/playground/handbook/guides/for-theme-developers/)