# Capistrano::WordPress A set of recipes for working with WordPress (via WP CLI) and Capistrano 3. ## Installation Add this line to your application's Gemfile: ```ruby gem 'capistrano', '~> 3.0.0' gem 'wordpress-capistrano' ``` And then execute: $ bundle Or install it yourself as: $ gem install wordpress-capistrano ## Usage Require the module in your `Capfile`: ```ruby require 'capistrano/wordpress' ``` `wordpress/capistrano` comes with 4 tasks: * wordpress:db:push - Exports your local database and imports it on remote server * wordpress:db:pull - Exports your remote database and imports it on your local * wordpress:db:deploy - Uploads the .sql in your version control and imports in on remote * wordpress:uploads:sync - Synchronises your local and remote wp-content/uploads folder so that you have all assets * wordpress:uploads:push - Pushes your local wp-content/uploads folder to the remote. * wordpress:uploads:pull - Pulls the remote wp-content/uploads folder to your local installation. * wordpress:paths - Updates WordPress paths to match latest release folders You can run any of these by issuing the following commands.. ```bash $ bundle exec cap production wordpress:db:push $ bundle exec cap production wordpress:db:pull $ bundle exec cap production wordpress:db:deploy $ bundle exec cap production wordpress:uploads:sync $ bundle exec cap production wordpress:uploads:pull $ bundle exec cap production wordpress:uploads:push $ bundle exec cap production wordpress:paths ``` None of these tasks are built into the default Capistrano deploy as they are potentially damaging. To add any of them, add the following code into your deploy.rb ```ruby after :updated, 'wordpress:db:deploy' after :updated, 'wordpress:uploads:sync' ``` These are useful on sites where all content is under version control ### Other Recommended Settings This gem does not have libraries to perform common tasks like symlinking wp-content/uploads or symlinking database configuration files. Some recommended settings to go along with your deploy.rb are below. #### Use Composer for WordPress and Plugins ```json { "repositories": [ { "type": "composer", "url": "http://wpackagist.org" }, { "type": "package", "package": { "name": "wordpress", "type": "webroot", "version": "3.8.1", "dist": { "type": "zip", "url": "http://en-au.wordpress.org/wordpress-3.8.1-en_AU.zip" }, "require": { "fancyguy/webroot-installer": "1.0.0" } } }, ], "require": { "php": ">=5.3.0", "wordpress": "3.8.1", "fancyguy/webroot-installer": "1.0.0", "wpackagist/advanced-custom-fields": "*", "wpackagist/codepress-admin-columns": "*", "wpackagist/custom-post-type-ui": "*", "wpackagist/wordpress-importer": "*", "wpackagist/duplicate-post": "*", "wpackagist/simple-page-ordering": "*", "wpackagist/adminimize": "*" }, "require-dev": { "wpackagist/debug-bar": "*", "wpackagist/pretty-debug": "*" }, "extra": { "webroot-dir": "wp", "webroot-package": "wordpress" } } ``` #### Use Linked Dirs and Linked Files ```ruby set :linked_dirs, %w{wp-content/uploads} set :linked_files, %w{wp-config.local.php} ``` ### Configuration Configurable options, shown here with defaults: ```ruby set :url, 'www.wordpress.org' set :local_url, 'localhost' set :wp_path, '.' set :wp_uploads, 'wp-content/uploads' ``` ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request Also, please ask the owner of the capistrano-wordpress gem to give up his name! ## Credits * https://github.com/herrkris/wordpress-capistrano * https://github.com/capistrano/composer