WP-CLI: La navaja suiza de WordPress que te hará un superhéroe

47
WP-CLI La navaja suiza de WordPress que te hará un superhéroe

Transcript of WP-CLI: La navaja suiza de WordPress que te hará un superhéroe

WP-CLILa navaja suiza de WordPressque te hará un superhéroe

WP VALENCIAhttp://www.wpvalencia.org/@_wpvalencia#wpvalencia

AGRADECIMIENTOSIEM Business School http://iembs.com/

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

Superpoderes: TODOS

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

Listar post: wp post list --post_type=page —fields=post_title,post_status!!!

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

#