Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[CLI] Add --wordpress-install-mode flag #2803

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
adamziel wants to merge 8 commits into trunk
base: trunk
Choose a base branch
Loading
from wordpress-install-mode-flag

Conversation

@adamziel
Copy link
Collaborator

@adamziel adamziel commented Oct 21, 2025

Motivation for the change, related issues

Studio noted they can't easily used a local, unzipped WordPress directory:

Playground CLI always tries to download and install WordPress if we don't have the skipWordpressSetup flag

This PR separates skipping the download from skipping the installation.

Implementation

This PR adds a new CLI option called --wordpress-install-mode with the following supported values:

  • download-and-install (default)
  • install-from-existing-files
  • install-from-existing-files-if-needed
  • assume-already-installed

Supersedes #2786

Testing instructions

Run

alias pgcli="node --no-warnings=ExperimentalWarning --experimental-strip-types --experimental-transform-types --import ./packages/meta/src/node-es-module-loader/register.mts ./packages/playground/cli/src/cli.ts"
# This should install an already downloaded WordPress
pgcli server --wordpress-install-mode=download-and-install --mount-before-install=./unzipped-wp-directory:/wordpress
# This should install WordPress without downloading it first
pgcli server --wordpress-install-mode=install-from-existing-files --mount-before-install=./unzipped-wp-directory:/wordpress

cc @bcotrim @brandonpayton

adamziel and others added 7 commits October 21, 2025 12:39
## Motivation for the change, related issues
Part of #2202
Add Japanese translations to JavaScript API
## Motivation for the change, related issues
Importing WXR content with URL rewriting enabled replaces the protocol
in some URLs from `https` to `http`.
## Implementation details
Sets `$_SERVER['HTTPS'] = "on"` in the `importWxr` Blueprint step. The
`php.run()` method called in the `importWxr` step does not set it
automatically – that's a role of the request handler. The WXR importer
relies on the `get_site_url()` WordPress function, which weirdly takes
the `site_url` option and replaces the protocol based on the
`$_SERVER['https']` value.
## Testing Instructions (or ideally a Blueprint)
Import this WXR file via `?importWxr` query parameter and confirm all
the URLs are https:
https://gist.github.com/adamziel/a3d1a1941608e068e4b3d557ee2e8202/raw/aa659a130e1104cedeea8a63155a117dcb693dc8/tt25export.xml
The tricky part is, you need to serve Playground on a https url for this
to work.
cc @bph 
Copy link
Member

@brandonpayton brandonpayton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some failing tests, but this reads well to me. Thank you, @adamziel!

- `--blueprint-may-read-adjacent-files`: Consent flag: Allow "bundled" resources in a local blueprint to read files in the same directory as the blueprint file.
- `--login`: Automatically log the user in as an administrator.
- `--skip-wordpress-setup`: Do not download or install WordPress. Useful if you are mounting a full WordPress directory.
- `--wordpress-install-mode <mode>`: Control how Playground prepares WordPress before booting. Defaults to `download-and-install`. Other options: `install-from-existing-files` (install using files you've mounted), `install-from-existing-files-if-needed` (skip setup when an existing site is detected), and `do-not-attempt-installing` (never download or install WordPress).
Copy link
Member

@brandonpayton brandonpayton Oct 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are lovely, clear option names!

* just as the web request layer would.
*/
HTTPS: (await playground.absoluteUrl).startsWith('https://') ? 'on' : '',
},
Copy link
Member

@brandonpayton brandonpayton Oct 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adamziel Is change intentional as part of this PR?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks! It got intertwined, a rebase will solve it – that's already merged into trunk

brandonpayton reacted with thumbs up emoji
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@brandonpayton brandonpayton brandonpayton approved these changes

Assignees

No one assigned

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /