+ All Categories
Home > Documents > MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE...

MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE...

Date post: 02-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
40
Mike Schroder | @GetSource Developer, WordPress Specialist at DreamHost MAGICAL WORDPRESS MANAGEMENT USING WP-CLI WordCamp San Francisco 2013
Transcript
Page 1: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

Mike  Schroder  |  @GetSource  Developer,  WordPress  Specialist  at  DreamHost  

MAGICAL WORDPRESS MANAGEMENT USING WP-CLI

WordCamp  San  Francisco  2013  

Page 2: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

RANDOM FACTS  Third  Culture  Kid  Enjoys  Coffee  &  Sailing  Blogs  at  getsource.net  

CREDENTIALS  

Mike  Schroder,  a.k.a.  DH-­‐Shredder,  a.k.a  @GetSource  

Happy  DreamHost  Employee  WordPress  Core  Contributor  WordPress  3.5  Recent  Rockstar  Trusted  WP-­‐CLI  Feature  Contributor  

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 3: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

THERE ARE TWO GROUPS OF PEOPLE.

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 4: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

THOSE WHO USE THE COMMAND LINE

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 5: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

THOSE WHO ARE GOING TO USE THE COMMAND LINE

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 6: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

DON’T BE AFRAID OF THE CLI IT’S  YOUR  FRIEND.  

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 7: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

OH, YOU LIKE THE CLI? WP-­‐CLI  WILL  MAKE  YOUR  LIFE  BETTER  

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 8: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

SUPER COOL OPEN SOURCE TOOL TO MANAGE WORDPRESS

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 9: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

HEADED UP BY CRISTI BURCĂ (SCRIBU) AND ANDREAS CRETEN

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 10: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

USES WORDPRESS ITSELF TO PERFORM OPERATIONS

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 11: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

AUTOMATION!

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 12: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

WHAT CAN I DO WITH IT?

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 13: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 14: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

NO, REALLY.

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 15: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp core update

UPDATE WORDPRESS

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 16: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp plugin install <slug or .zip>

INSTALL A PLUGIN

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 17: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp theme activate <slug>

CHANGE THEME

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 18: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp db export [filename]

BACKUP YOUR DATABASE

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 19: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp plugin update-all

UPDATE PLUGINS

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 20: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp theme update-all

UPDATE THEMES

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 21: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp search-replace <old> <new>

REPLACE TEXT IN DB

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 22: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

WHAT IS THIS SORCERY?

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 23: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 24: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

SOLD. HOW DO I GET THIS AWESOMENESS?

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 25: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

-­‐    SSH  access  to  your  WordPress  install's  directory  -­‐    PHP  5.3.2+  -­‐    WordPress  3.4+  -­‐    Enough  RAM  for  shell  processes  to  run  WordPress  -­‐    Linux  or  MacOS  (for  now)  

WHAT DO I NEED TO RUN IT?

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 26: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ curl https://raw.github.com/wp-cli/wp-cli.github.com/master/installer.sh | bash

INSTALL IN LOCAL USER

Full Instructions at: wp-­‐cli.org    

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 27: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

BUT WAIT, THERE’S MORE!

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 28: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

WP-CLI IS EXTENSIBLE!

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 29: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

Run/Alias:     $ wp --require='cmd_name.php’

wp-­‐cli.yml  

require: /path/to/cmd_name.php

ADD YOUR OWN LOCALLY

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 30: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

OR IN YOUR PLUGINS if ( defined('WP_CLI') && WP_CLI ) {     include( PLUGIN_DIR . '/lib/wp-cli.php' ); }

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 31: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

$ wp migrate backup [file.tar.gz] [--no-db] [--db-name=<file.sql>]

CUSTOM COMMAND: BACKUP!

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 32: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

Strategy -­‐    Use  Built-­‐in  SQL  Backup  Command  -­‐    Create  .tar.gz  of  install’s  ciles  and  database.  

CUSTOM COMMAND: BACKUP!

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 33: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

ADD COMMAND <?php WP_CLI::add_command( 'migrate', 'DH_Migrate_Command' ); /** * DreamHost Migrate Plugin * * @package DH_Migrate_Command * @subpackage commands/community * @maintainer Mike Schroder */ class DH_Migrate_Command extends WP_CLI_Command { // ...

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 34: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

DEFINE YOUR SUBCOMMAND

/** * Backup entire WordPress install, including core, plugins and database.  * * @param array $args * @param array $assoc_args * @synopsis [backup_filename] [--no-db] [--db-name=<filename>]  */ function backup( $args, $assoc_args ) { // ...

$args Stand-­‐alone  arguments  

$assoc_args --arg=value  style  in  associative  array  

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 35: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

DEFINE YOUR SUBCOMMAND

/** * Backup entire WordPress install, including core, plugins and database.  * * @param array $args * @param array $assoc_args * @synopsis [backup_filename] [--no-db] [--db-name=<filename>]  */ function backup( $args, $assoc_args ) { // ...

@synopsis WP-­‐CLI  specicic  comment  to  automatically  force  proper  CLI  syntax  

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 36: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

function backup( $args, $assoc_args ) {     $filename = $dbname = null;     $backup_directory = '../';     // If a filename isn't specified, default to "Site's Title.tar.gz".     if ( empty( $args ) )         $filename = $backup_directory . get_bloginfo() . '.tar.gz';     else         $filename = $args[0]; // ...

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 37: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

  // If --no-db is specified, don't include the database in backup   if ( ! isset( $assoc_args['no-db'] ) ) { $dbname = isset( $assoc_args['db-name'] ) ? $assoc_args['db-name'] : 'database_backup.sql';   WP_CLI::run_command( array( 'db', 'export', $backup_directory . $dbname), array() );   } // ...

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 38: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

// Using esc_cmd to automatically escape parameters. // We can't use --exclude-vcs, because it's not available on OSX. WP_CLI::line( "Backing up to $filename ..." ); $result = WP_CLI::launch( \WP_CLI\Utils\esc_cmd( "       tar                     \           --exclude '.git'  \           --exclude '.svn'    \           --exclude '.hg’     \           --exclude '.bzr'    \           -czf %s . -C %s %s  \   ", $filename, $backup_directory, $dbname ), false ); // ...

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 39: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

   // If we created a database backup, remove the temp file.   if ( $dbname && ! unlink( $backup_directory . $dbname ) )       WP_CLI::warning( "Couldn't remove temporary database backup, '$dbname'." );      if ( 0 == $result ) {        WP_CLI::success( "Backup Complete." );    } else {        WP_CLI::error( "Backup Failed." );    } } // End backup } // End DH_Migrate_Command

Mike  Schroder  |  @GetSource  |  #wcsf  2013    

Page 40: MAGICAL WORDPRESS MANAGEMENT USING WP-CLI · THOSE WHO ARE GOING TO USE THE COMMAND LINE MikeSchroder|@GetSource|# wcsf2013%%

   -­‐    wp-­‐cli.org  -­‐    getsource.net/tag/wp-­‐cli/  -­‐    halfelf.org/2012/command-­‐line-­‐wp      -­‐    ciles.fosswire.com/2007/08/fwunixref.pdf    

FURTHER LEARNIFICATION: WP-CLI:

CLI Cheat Sheet:

Mike  Schroder  |  @GetSource  |  #wcsf  2013    


Recommended