WordPress multisite allows plugins and themes to be Network Active. This prevents them from being deactivated on any site in the network.
To change a plugin from Network Active on every site to individually active on each site:
- Manually Network Deactivate the plugin from the network plugins page. The
wp network
command does not yet support plugin deactivation. - Connect to the server via SSH and run this WP CLI command:
wp site list --field=url | xargs -n1 -I % wp --url=% plugin activate hello.php
(where hello.php is the plugin file or folder name)
What does the command do?
wp site list --field=url
produces a list of URLs for all of the sites on the network.
The |
operator passes the results from wp site list
to xargs
. xargs
can take the output from one command and send it to another command as parameters.
The -n1
flag to xargs processes each line of output from the site list command one at a time. -n2
would send two site URLs to the next command.
wp --url=% plugin activate hello.php
is the command to which xargs is passing the site URLs. It activates the Hello Dolly plugin on each site specified by URL. The % sign is our replacement character where each URL will populate.