There’s a few questions I’m commonly asked about using composer + WordPress. Here they are in a super short form FAQ:
To install a composer project, run:
composer install
To update a composer project, run:
composer update
Install WordPress in a folder
composer require johnpbloch/wordpress @stable
or in your composer.json
add:
{ "require" : { "johnpbloch/wordpress": "@stable" } }
Note: This is a subdirectory install, you really don’t want to nest composer packages. If you want plugins/themes etc under wp-content, I recommend using WP CLI instead to install and update WordPress Core
Install a plugin in a WordPress Install
composer require plugin-package-name-goes-here *
or in your composer.json
add:
{ "require" : { "plugin-package-name-goes-here": "*" } }
Install a Theme in a WordPress Install
composer require theme-package-name-goes-here *
or in your composer.json
add:
{ "require" : { "theme-package-name-goes-here": "*" } }
Manage only Themes/Plugins with Composer
It’s easy, just don’t mention WordPress core in your composer.json
file
You don’t use Composer but you’d like to
Install Composerpress, and under the tools menu will be a new settings page. Visit this page and Composerpress will scan your WordPress install and reverse engineer a composer.json
for you. Copy and paste it into a composer.json
file, and you’re good to go
You want to add Composer support to a theme
Put a composer.json
at the root of your theme with this in it:
{ "name" : "package/name", "description": "Your themes description", "keywords" : ["wordpress"], "type" : "wordpress-theme", "license" : "GPL-3.0", "require" : { "composer/installers" : "~1.0", } }
You want to add Composer support to a plugin
Put a composer.json
at the root of your plugin with this in it:
{ "name" : "package/name", "description": "Your plugins description", "keywords" : ["wordpress"], "type" : "wordpress-plugin", "license" : "GPL-3.0", "require" : { "composer/installers" : "~1.0", } }
Want to use a theme from WordPress.org
{ "repositories":[ { "type":"composer", "url":"http://wpackagist.org" } ], "require" : { "wpackagist-theme/theme-name": "*" } }
You Want to use a plugin from WordPress.org
{ "repositories":[ { "type":"composer", "url":"http://wpackagist.org" } ], "require" : { "wpackagist-plugin/plugin-name": "*" } }
Declare that the plugin depends on another plugin on WordPress.org
Inside the plugins composer.json
:
{ "repositories":[ { "type":"composer", "url":"http://wpackagist.org" } ], "require" : { "wpackagist-plugin/other-plugins-name: "*" } }
Declare a minimum PHP version
{ "require" : { "php": ">=5.4" } }
Use Composer inside a Single Theme or Plugin
Option 1: Install the theme/plugin and run composer install
in that folder
Option 2: Create a folder for the plugin and inside that folder run composer require theme-package-name *
Should I put my Theme/Plugin on Packagist?
If you must, but, Packagist is for things that are of interest to the broad PHP community, not a sub-community such as WordPress. Use WPackagist and the WordPress.org system instead.
RT @Tarendai: WordPress and Composer TLDR: http://t.co/4imUFRkxZ8 #WordPress #Composer #PHP
@Tarendai not sure on @-stable, I think if you just omit Composer will now put latest stable with ^ into version now
@Tarendai also disagree with not putting on packagist. WP is also PHP, it’s fine.
RT @Tarendai: WordPress and Composer TLDR: http://t.co/4imUFRkxZ8 #WordPress #Composer #PHP
WordPress and Composer TLDR: http://t.co/3gLjSnt3MX #WordPress #Composer #PHP #WebDev
RT @NaveenS16: WordPress and Composer TLDR: http://t.co/3gLjSnt3MX #WordPress #Composer #PHP #WebDev