WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli
-
Upload
getsource -
Category
Technology
-
view
2.354 -
download
3
description
Transcript of WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli
![Page 1: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.us/reader038/viewer/2022103114/554f5007b4c905423f8b518b/html5/thumbnails/13.jpg)
![Page 14: WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli](https://reader038.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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.fdocuments.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