-
GitHub stars
-
Projects created
-
roots/wordpress installs
WordPress Dependencies with Composer
Bedrock uses Composer to manage dependencies. Any 3rd party library is considered a dependency, including WordPress itself and any plugins.
# Adding WordPress plugins with Composer
WordPress Packagist is already registered in the composer.json
file so any plugins from the WordPress Plugin Directory can easily be required.
To add a plugin, add it under the require
directive or use composer require <namespace>/<packagename>
from the command line. If the plugin is from WordPress.org, then the namespace is always wpackagist-plugin
:
$ composer require wpackagist-plugin/akismet
plugins
and mu-plugins
are ignored in Git by default since Composer manages them. If you want to add something to those folders that isn't managed by Composer, you need to update .gitignore
to allow them to be added to your repository:
!web/app/plugins/plugin-name
# Force a plugin to be a mu-plugin
To force a regular wordpress-plugin
to be treated as a wordpress-muplugin
, you can update the installer-paths
config to tell Bedrock to install it in the mu-plugins
directory.
In the following example, Akismet will be installed in the mu-plugins
directory:
...
"extra": {
"installer-paths": {
"web/app/mu-plugins/{$name}/": ["type:wordpress-muplugin", "wpackagist-plugin/akismet"],
"web/app/plugins/{$name}/": ["type:wordpress-plugin"],
"web/app/themes/{$name}/": ["type:wordpress-theme"]
},
"wordpress-install-dir": "web/wp"
},
...
# Configuring multiple mu-plugins
To configure more than one regular plugin to be installed to mu-plugins
, add additional strings to the same array value for the web/app/mu-plugins/{$name}/
JSON key, for example:
...
"web/app/mu-plugins/{$name}/": [
"type:wordpress-muplugin",
"wpackagist-plugin/akismet",
"wpackagist-plugin/turn-comments-off"
],
...
# Updating WordPress and WordPress plugin versions with Composer
Updating your WordPress version, or the version of any plugin, is best achieved by re-requiring the dependencies to install the latest versions or specific versions:
$ composer require roots/wordpress -W
$ composer require wpackagist-plugin/akismet
$ composer require roots/wordpress:6.1 -W
# Automating WordPress updates
Tools like Dependabot and Renovate can be used to automate updates of your Composer dependencies in Bedrock, including WordPress itself.
The Bedrock repo uses Renovate to bump WordPress versions when new versions become available.
# Adding WordPress themes with Composer
Themes can also be managed by Composer but should only be done so under two conditions:
- You're using a parent theme that won't be modified at all
- You want to separate out your main theme and use that as a standalone package
Under most circumstances, we recommend keeping your main theme as part of your repository.
Just like plugins, WPackagist maintains a Composer mirror of the WP theme directory. To require a theme, just use the wpackagist-theme
namespace:
$ composer require wpackagist-theme/twentytwentythree
# Recommended resources
WordPress with Composer resources for more extensive documentation and background information:
Contributors
Last updated
Support Roots
Help us continue to build and maintain our open source projects. We’re a small team of independent developers and every little bit helps.
Sponsor Roots on GitHub