wordcamp vancouver 2012 - manage wordpress with awesome using wp-cli
DESCRIPTION
Manage WordPress with Awesome using wp-cli talk from WordCamp Vancouver 2012. Does updating all your plugins by running `wp plugin update –all` sound too good to be true? Enter wp-cli, an open source WordPress management tool. Learn how to install it locally or globally on your host, perform common WordPress administration tasks, and expand its functionality with plugins of your own. Presented by Mike Schroder (@GetSource/DH-Shredder)TRANSCRIPT
![Page 1: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/1.jpg)
Manage WordPress with Awesome using wp-cli
WordCamp Vancouver 2012
Mike Schroder (DH-Shredder)@GetSource - http://www.getsource.net
![Page 2: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/2.jpg)
Who Am I?
• Mike Schroder, a.k.a DH-Shredder, a.k.a. @GetSource
• Third Culture Kid, enjoy Coffee & Sailing
• WordPress Core and wp-cli Contributor
• Happy DreamHost Employee
![Page 3: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/3.jpg)
There are two groupsof people.
![Page 4: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/4.jpg)
Those who use the command line
![Page 5: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/5.jpg)
Those who are going to use the command line
![Page 6: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/6.jpg)
Don’t be afraid of the CLI.It’s your friend.
![Page 7: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/7.jpg)
Oh, you like the CLI?wp-cli will make your life better.
![Page 8: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/8.jpg)
What’s wp-cli?
super-cool Open Source tool to manage WordPress
![Page 9: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/9.jpg)
Why so cool?
Headed up by Andreas Creten and Cristi Burcă (scribu)
![Page 10: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/10.jpg)
Why so cool?
Uses WordPress itself to perform operations
![Page 11: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/11.jpg)
Why so cool?
Automation!
![Page 12: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/12.jpg)
What can I do with it?
![Page 13: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/13.jpg)
![Page 14: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/14.jpg)
No, Really.
![Page 15: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/15.jpg)
Update WordPress
wp core update
![Page 16: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/16.jpg)
Install a Theme
wp theme install sunspot
![Page 17: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/17.jpg)
Reset to default theme
wp theme activate twentytwelve
![Page 18: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/18.jpg)
Backup your Database
wp db export backup.sql
![Page 19: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/19.jpg)
Update Plugins
wp plugin update --all
![Page 20: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/20.jpg)
What do I need to run it?
![Page 21: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/21.jpg)
What do I need to run it?
• SSH access to your WordPress install's directory
![Page 22: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/22.jpg)
What do I need to run it?
• SSH access to your WordPress install's directory
• PHP 5.3+
![Page 23: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/23.jpg)
What do I need to run it?
• SSH access to your WordPress install's directory
• PHP 5.3+
• WordPress 3.3+
![Page 24: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/24.jpg)
What do I need to run it?
• SSH access to your WordPress install's directory
• PHP 5.3+
• WordPress 3.3+
• Enough RAM for shell processes to run WordPress
![Page 25: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/25.jpg)
What do I need to run it?
• SSH access to your WordPress install's directory
• PHP 5.3+
• WordPress 3.3+
• Enough RAM for shell processes to run WordPress
• Easiest on Linux & MacOS
![Page 26: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/26.jpg)
Okay. Got that covered.How can I get this
Awesomeness?
![Page 27: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/27.jpg)
Download wp-cli
git clone --recursive git://github.com/wp-cli/wp-cli.git
![Page 28: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/28.jpg)
Make it runnable from your WordPress Install.
![Page 29: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/29.jpg)
If you have sudo:
sudo utils/dev-build
![Page 30: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/30.jpg)
Otherwise, add an alias(.bashrc/.bash_profile)
alias wp='/home/user/wp-cli/src/bin/wp';
![Page 31: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/31.jpg)
In ~/.bash_profile:
if [ -f ~/.bashrc ]; then source ~/.bashrcfi
(http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html)
![Page 32: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/32.jpg)
You’ve got it installed?
Let’s dig deeper.
![Page 33: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/33.jpg)
wp-cli is extensible.
![Page 34: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/34.jpg)
Add your own directly
wp-cli/src/php/wp-cli/commands/community/cmd_name.php
![Page 35: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/35.jpg)
Or, define in your plugins.
if ( defined('WP_CLI') && WP_CLI ) {! include( PLUGIN_DIR . '/lib/wp-cli.php' );}
![Page 36: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/36.jpg)
Sample Plugin:
WCYVR Backup.
![Page 37: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/37.jpg)
Goal:wp wcyvr backup [--no-db] [/dir/outputfile.tar.gz]
![Page 38: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/38.jpg)
Our Plan:
- Use built-in SQL Backup- Create a .tar.gz of install and db
![Page 39: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/39.jpg)
<?php
// Let WP_CLI know we exist!// Earlier versions of wp-cli used WP_CLI::addCommand()WP_CLI::add_command( 'wcyvr', 'WCYVR_Backup_Command' );
/** * The WCYVR Backup Plugin * * @package WCYVR_Backup * @subpackage commands/community * @maintainer Mike Schroder */class WCYVR_Backup_Command extends WP_CLI_Command {...
Define the Base Command
![Page 40: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/40.jpg)
class WCYVR_Backup_Command extends WP_CLI_Command {
! function backup( $args, $assoc_args ) {! ! $filename = $dbname = null;! ! ...! }
! public static function help() {! ! WP_CLI::line( "usage: wp wcyvr backup [--no-db] [path/to/file]" );! }}
Define Sub-Commands• $args: stand-alone arguments
• $assoc_args: --arg=value style in associative array
![Page 41: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/41.jpg)
function backup( $args, $assoc_args ) {! $filename = $dbname = null;
! // If a filename isn't specified, default to "Site's Title.tar.gz".! if ( empty( $args ) )! ! $filename = '../' . escapeshellarg( get_bloginfo() ) . '.tar.gz';! else! ! $filename = $args[0];
Grab Filename
![Page 42: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/42.jpg)
! // If --no-db is specified, don't include the database in backup! if ( ! isset( $assoc_args['no-db'] ) ) {! ! $dbname = '../database_temp.sql';
! ! // This is cheating a bit, since wp-cli doesn't currently support! ! // running commands within commands without re-launching itself.! ! WP_CLI::run_command( array( 'db', 'export', $dbname ), array() );! }
Handle --no-db• SQL file not using temp location for simplicity of demo.
![Page 43: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/43.jpg)
! // GZ/Tar and Backup the install!! WP_CLI::line( "Backing up to '$filename' ..." );! $result = WP_CLI::launch( "tar -zcvf $filename . $dbname", false );
! // If we created a database backup, remove the temp file.! if ( $dbname && ! unlink( $dbname ) )! ! WP_CLI::warning( "Couldn't remove temporary database backup, '$dbname'." );
Back it up!• See class-wp-cli.php for more magical functions
![Page 44: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/44.jpg)
! // Will automatically exit on WP_CLI::error, but not WP_CLI::success.! if ( 0 == $result ) {! ! WP_CLI::success( "Backup Complete." );! } else {! ! WP_CLI::error( "Backup Failed." );! }}
ERROR ERROR
![Page 45: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.vdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/45.jpg)
Resources!• https://github.com/wp-cli/wp-cli
• https://github.com/wp-cli/wp-cli/wiki/List-of-internal-commands
• https://github.com/wp-cli/wp-cli/wiki/Commands-Cookbook
• http://scribu.net/wordpress/a-command-line-interface-for-wordpress.html
• http://wp.tutsplus.com/tutorials/using-wp-cli-for-fun-and-profit/
• http://halfelf.org/2012/command-line-wp/
• http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
Mike Schroder (DH-Shredder)@GetSource - http://www.getsource.net