Lets say I have a single multisite install on my server, and in that multisite/network admin I have 3 blogs:
- example.com ( root/primary/first site )
If I want to list posts on the main site example.com I can do this:
wp post list
But what if I want to list posts on the
example.com/second blog? Or
othersite.net blog? How would it know that's the site I wanted, not the root site? How does it know to load
Normally WordPress knows this because it's in the HTTP headers, but there are non in WP CLI. Instead I can do this by passing
wp post list --url="https://othersite.net"
Now WP CLI executes the command, and WP is loaded, but it loads the plugins and theme of othersite.net, with the posts etc of othersite.net.
My understanding of WP-CLI is that the site @aliases are the best way to target a site when you have multiple sites...
When you have multiple installs or servers. If I have 2 multisites then 2 alias' are best, but that an alias doesn't help me differentiate between blogs/sites in an install of WordPress.
For example, I can't run a command on server A that executes on server B using
--url that command would still be handled by that WP install even if that WP install isn't set up to handle that URL.
For example, on my server hosting my multisite website:
❯ wp option get siteurl
❯ wp option get siteurl --url="http://frontenberg.tomjn.com"
❯ wp option get siteurl --url="http://madeupsite.com"
Error: Site 'madeupsite.com' not found. Verify `--url=<url>` matches an existing site.
I can however use an
alias to run WP CLI on my local machine, and have it automatically connect to a server and use a WordPress installation in a known location, as well as specifying certain things in advance to save time. E.g. I might use
wp locally, but also have
wp @dev and
wp @staging and
I might also use alias' for the same site/server but specify different options such as the current user etc. Note that alias' aren't used by everybody.