Soy Sergio Nieto
Developer freelance de WordPress Coorganizador de #wpvalencia Meetup Hablo poco, pero lo hago como @snieto
Qué voy a contar
· Qué es WP-CLI · Cómo instalarlo · Qué superpoderes tiene · Comandos para ser un superhéroe · Cómo salvar el mundo
Qué es WP-CLI
WP-CLI es un conjunto de herramientas de línea de comandos que nos permiten gestionar instalaciones de WordPress. !
Y todo ello sin usar un navegador. !
Major contributor: Daniel Bachhuber
1
¿Y qué tiene eso de especial?
Me ahorra tiempo. Me facilita la gestión de WP. Me soluciona problemas. Me permite automatizar. Me deja extenderlo. !
Me da superpoderes. Me hace más ‘cool’.
¿Cómo funciona?
WP-CLI es una librería de comandos que expone las funciones internas de WordPress. !
Ahora podemos acceder a funciones, a recursos, a la base de datos, y a todo lo que tenga una instalación de WordPress estándar.
Odio la línea de comandos
No eres el único. Pero desde WordPress.org tratan de hacer este ‘entorno’ más amigable con esta pequeña guía: !
https://make.wordpress.org/cli/handbook/shell-friends/ !(A mí me gusta)
Tiene soporte oficialEn diciembre de 2016 Matt Mullenweg anuncia que WordPress.org apoya oficialmente el proyecto. !
“one of the highest impact developments for WP in many years.” !
https://wptavern.com/wp-cli-gets-official-wordpress-org-support
Las webs de WP-CLIhttp://wp-cli.org/ !
https://make.wordpress.org/cli/ https://make.wordpress.org/cli/handbook/tools/
Créditos
· Daniel Bachhuber - current maintainer !
· Cristi Burcă - previous maintainer !
· Andreas Creten - founder !
https://github.com/wp-cli/wp-cli/graphs/contributors
¿Cómo instalarlo?
La opción sencilla: !
Descargar el fichero wp-cli.phar. Darle permisos y una nueva casa. !curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar!!chmod +x wp-cli.phar!!sudo mv wp-cli.phar /usr/local/bin/wp
2
Instalación (2)
La opción ‘PRO’: !
Incluirlo en tu proyecto con composer. !!"wp-cli/wp-cli": "@stable"!!
Instalación (3)
Ahora ya podemos usarlo: !
wp <comando> wp cli (para gestionarlo a él mismo) !
Por ejemplo: !!wp cli version!> WP-CLI 1.1.0
Qué superpoderes tiene
Las opciones que nos da WP-CLI son muchísimas. !
Estas son algunas de ellas: !
- Instalar WP - Actualizar WP
3
Superpoderes (2)
- Instalar plugins - Actualizar plugins - Activar/desactivar plugins !
- Instalar temas - Actualizar temas - Activar/desactivar temas !
Superpoderes (3)
- Escribir posts y páginas - Borrar posts y páginas - Cambiar el estado de posts y
páginas !
- Listar y obtener información de tipos de post (CPT)
!
Superpoderes (4)
Abreviemos… - Gestionar comentarios - Gestionar cron - Importar/exportar base de datos - Ejecutar consultas - Crear, Optimizar, reparar, borrar - Regenerar thumbnails - Y mucho más
Cómo convertirme en superhéroe
Veamos algunos ejemplos en los que WP-CLI nos va a ayuda a convertirnos en alguien muy especial. !
Vamos a convertirnos en un verdadero superhéroe.
4
Empecemos poco a poco
Formulario web para ayudar a crear los comandos para instalar WordPress con WP-CLI. !
https://wpcligui.com/ !
!
Superhéroe de plugins
Instalar y activar plugins: wp plugin install woocommerce —activate!!
Activar plugins: wp plugin activate woo commerce!!
Desactivar plugins: wp plugin deactivate woocommerce!!
Listar plugins: wp plugin list
Superhéroe del post (2)
Listar post: wp post list --post_type=page —fields=post_title,post_status!!!
¿No te impresiona? Borrar post por defecto de WordPres: !wp post delete $(wp post list --post_type=page --posts_per_page=1 --post_status=publish --pagename="sample-page" --field=ID --format=ids)
Superhéroe del post (3)usage: wp post create [<file>] [--<field>=<value>] [--edit] [--porcelain] or: wp post delete <id>... [--force] [--defer-term-counting] or: wp post edit <id> or: wp post generate [--count=<number>] [--post_type=<type>] [--post_status=<status>] [--post_author=<login>] [--post_date=<yyyy-mm-dd>] [--post_content] [--max_depth=<number>] [--format=<format>] or: wp post get <id> [--field=<field>] [--fields=<fields>] [--format=<format>] or: wp post list [--<field>=<value>] [--field=<field>] [--fields=<fields>] [--format=<format>] or: wp post meta <command> or: wp post term <command> or: wp post update <id>... [<file>] --<field>=<value> [--defer-term-counting]
Superhéroe del post (4)
Crea posts programados: wp post create --post_type=page --post_title='A future post' --post_status=future --post_date='2020-12-01 07:00:00'!!!
Crea posts a partir de un fichero: wp post create ./post-content.txt --post_category=201,345 --post_title='Post from file’!!
Parámetro que devuelve solo el ID: --porcelain
Superhéroe de la eficiencia
Genera cientos de posts (para probar paginación, velocidad, etc): !wp post generate --count=100 --post_type=page —post_date=2002-02-02!!
Generalos a partir de contenido: !curl http://loripsum.net/api/5 | wp post generate --post_content --count=10
Superhéroe del thumbnail
Regenerar thumbnails: wp media regenerate —yes!!!
Importar una imagen local y añadirla como imagen destacara de un post: !wp media import ~/Downloads/image.png --post_id=123 --title="A downloaded picture" --featured_image
Superhéroe políglota
Lista los paquetes de idiomas instalados: wp core language —list —fields=language!
!
Instala diferentes ficheros de idiomas: wp core language install es_ES —activate!!
Superhéroe del reemplazo
Reemplazar cadenas en base de datos (histórico dolor de cabeza de WP para el caso de la url) !wp search-replace “http://domain.dev” “http://domain.com” —skip-columns=guid!!
Para cobardes (cautos, mejor dicho): !wp search-replace “http://domain.dev” “http://domain.com” —skip-columns=guid —dry-run
Superhéroe de whatever
http://wordpress.stackexchange.com/questions/tagged/wp-cli !
https://make.wordpress.org/cli/handbook/external-resources/ !
!
Cómo salvar el mundo· Coleccionando ‘recetas’ de comandos WP-CLI para las épocas de tempestad. !
· Automatizando tareas para minimizar fallos. !
· Extendiendo WP-CLI con tus comandos
5
Activar el autocompletadoExiste un script para usar con Bash y ZSH que activa el autcompletado de comandos: !~/.bash_profile source /FULL/PATH/TO/wp-completion.bash !source ~/.bash_profile !https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash
El fichero confighttps://make.wordpress.org/cli/handbook/config/#config-files !# Global parameter defaults path: wp-core url: http://example.com user: admin color: false disabled_commands: - db drop - plugin install require: - path-to/command.php !# Subcommand defaults (e.g. `wp core config`) core config: dbuser: root dbpass: extra-php: | define( 'WP_DEBUG', true ); define( 'WP_POST_REVISIONS', 50 );
Dominar los alias
Fichero de configuración ~/.wp-cli/config.yml !@staging: ssh: [email protected] user: wpcli path: /srv/www/staging.wp-cli.org @production: ssh: [email protected]:2222 user: wpcli path: /srv/www/wp-cli.org
—-—-—-—- !wp @production db export > sql-dump-production.sql
Dominar los paqueteshttp://wp-cli.org/package-index/ !
Hay algunos incorporados ya a WP-CLI y otros que no se actualizan desde hace tiempo. !
Wish-list: “Highlight packages in the index that are regularly updated" https://make.wordpress.org/cli/handbook/wish-list/#package-index
Chequear la salud de WP
Diagnostica tu WP con un simple chequeo: !
wp doctor !wp package install wp-cli/doctor-command
!https://make.wordpress.org/cli/2017/02/08/two-new-commands-doctor-and-profile/
Chequear la salud de WP (2)wp doctor !$ wp @daniel doctor check --all Running checks 100% [===========================================================] 0:02 / 0:09 +----------------------------+---------+--------------------------------------------------------------------+ | name | status | message | +----------------------------+---------+--------------------------------------------------------------------+ | core-verify-checksums | success | WordPress verifies against its checksums. | | file-eval | success | All 'php' files passed check for 'eval\(.*base64_decode\(.*'. | | autoload-options-size | success | Autoloaded options size (16.25kb) is less than threshold (900kb). | | constant-savequeries-falsy | success | Constant 'SAVEQUERIES' is undefined. | | constant-wp-debug-falsy | success | Constant 'WP_DEBUG' is defined falsy. | | core-update | success | WordPress is at the latest version. | | cron-count | success | Total number of cron jobs is within normal operating expectations. | | cron-duplicates | success | All cron job counts are within normal operating expectations. | | option-blog-public | success | Site is public as expected. | | plugin-active-count | success | Number of active plugins (2) is less than threshold (80). | | plugin-deactivated | success | Less than 40 percent of plugins are deactivated. | | plugin-update | success | Plugins are up to date. | | theme-update | warning | 1 theme has an update available. | +----------------------------+---------+--------------------------------------------------------------------+
Conocer la velocidad de WP
Identifica donde está la tortuga en WP: !
wp profile !wp package install wp-cli/profile-command
!https://make.wordpress.org/cli/2017/02/08/two-new-commands-doctor-and-profile/
Conocer la velocidad de WP (2)
wp profile stage --fields=stage,time,cache_ratio !+------------+---------+-------------+ | stage | time | cache_ratio | +------------+---------+-------------+ | bootstrap | 0.7994s | 93.21% | | main_query | 0.0123s | 94.29% | | template | 0.792s | 91.23% | +------------+---------+-------------+ | total (3) | 1.6037s | 92.91% | +------------+---------+-------------+
Conocer la velocidad de WP (3)
wp profile stage bootstrap --fields=hook,time,cache_ratio —spotlight !+--------------------------+---------+-------------+ | hook | time | cache_ratio | +--------------------------+---------+-------------+ | muplugins_loaded:before | 0.2423s | 25% | | muplugins_loaded | 0.0005s | 50% | | plugins_loaded:before | 0.03s | 47.62% | | plugins_loaded | 0.0072s | 60% | | after_setup_theme:before | 0.0201s | 100% | | init | 0.0223s | 100% | | wp_loaded:after | 0.0428s | | +--------------------------+---------+-------------+ | total (7) | 0.3652s | 63.77% | +--------------------------+---------+-------------+
Hacer sync de prod# sync-prod.sh read -r -p "Do you solemnly swear that you have had fewer than 2 alcoholic beverages in the last hour and that you would really like to reset your development database and pull the latest from production? [y/N] " response !if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then wp @development db reset --yes && wp @production db export - > sql-dump-production.sql && wp @development db import sql-dump-production.sql && wp @development search-replace https://example.com https://example.dev fi !https://roots.io/leveraging-wp-cli-aliases-in-your-wordpress-development-workflow/
Autom. una nueva instalación
Mega script para instalar un WordPress desde cero con tus plugins y tema favorito. !
http://bit.ly/wpcli-new-wp !!Thanks to: https://indigotree.co.uk/automated-wordpress-installation-with-bash-wp-cli/
Crea superpoderes: extensión
Más fácil de lo que parece: !WP_CLI::add_command( 'example','Example_Command'); !
Dominar con tu extensión (2)/* Plugin Name: Example WP-CLI Version: 1.0 Description: Demo for WP-CLI Tutorial Author: Tim Nash Author URI: https://timnash.co.uk */ !if( defined( 'WP_CLI' ) && WP_CLI ) { WP_CLI::add_command( 'example', 'Example_Command' ); } !class Example_Command extends WP_CLI_Command{ /** * * @subcommand get-option * @alias option * **/ function get_option( $args, $assoc_args ) { $default = 'example.com'; if( $assoc_args[ 'default' ] ){ $default = $assoc_args[ 'default' ]; } $return = get_option( $args[0], $default ); WP_CLI::success( $return ); } }
GRACIAS
Sergio Nieto García !
@snieto http://snieto.com http://about.me/sergionieto !
WordPress Valencia Meetup
#