WP CLI es un conjunto de herramientas que te va a hacer la vida más fácil porque te ayuda (y mucho) a gestionar tus sitios con WordPress.
Estos son algunos de tus nuevos superpoderes:
- Instalar WordPress sin abrir el navegador
- Actualizar core y plugins con un par de líneas de comandos
- Hacer superadmin a un usuario sin entrar al administrador
- Reemplazar cadenas en la base de datos sin entrar en pánico
...
Y si eres un 'manitas', hasta puedes soñar con automatizarlo (casi) todo.
Si no te gusta la linea de comandos, ahora sí te va a gustar. Si por el contrario ya te gustaba, vas a enamorarte de WP CLI. Te va a hacer ahorrar tiempo y te va a dar muchas satisfacciones. Y eso, en el mundo WordPress, no siempre es fácil ;)
4. Soy Sergio Nieto
Developer freelance de WordPress
Coorganizador de #wpvalencia Meetup
Hablo poco, pero lo hago como @snieto
5. 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
6. 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
7. ¿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’.
8. ¿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.
9. 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)
10. Tiene soporte oficial
En 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
11. Las webs de WP-CLI
http://wp-cli.org/
!
https://make.wordpress.org/cli/
https://make.wordpress.org/cli/
handbook/tools/
12. Créditos
· Daniel Bachhuber - current maintainer
!
· Cristi Burcă - previous maintainer
!
· Andreas Creten - founder
!
https://github.com/wp-cli/wp-cli/
graphs/contributors
13. ¿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
14. Instalación (2)
La opción ‘PRO’:
!
Incluirlo en tu proyecto con
composer.
!
!
"wp-cli/wp-cli": "@stable"!
!
15. 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
16. Qué superpoderes tiene
Las opciones que nos da WP-CLI son
muchísimas.
!
Estas son algunas de ellas:
!
- Instalar WP
- Actualizar WP
3
17. Superpoderes (2)
- Instalar plugins
- Actualizar plugins
- Activar/desactivar plugins
!
- Instalar temas
- Actualizar temas
- Activar/desactivar temas
!
18. 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)
!
19. Superpoderes (4)
Abreviemos…
- Gestionar comentarios
- Gestionar cron
- Importar/exportar base de datos
- Ejecutar consultas
- Crear, Optimizar, reparar, borrar
- Regenerar thumbnails
- Y mucho más
21. 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
22. Empecemos poco a poco
Formulario web para ayudar a crear
los comandos para instalar
WordPress con WP-CLI.
!
https://wpcligui.com/
!
!
25. 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)
26. 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]
27. 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
28. 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
29. 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
30. 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!
!
31. 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
33. 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
34. Activar el autocompletado
Existe 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
36. Dominar los alias
Fichero de configuración ~/.wp-cli/
config.yml
!
@staging:
ssh: wpcli@staging.wp-cli.org
user: wpcli
path: /srv/www/staging.wp-cli.org
@production:
ssh: wpcli@wp-cli.org:2222
user: wpcli
path: /srv/www/wp-cli.org
—-—-—-—-
!
wp @production db export > sql-dump-production.sql
37. Dominar los paquetes
http://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
38. 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/
39. 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. |
+----------------------------+---------+--------------------------------------------------------------------+
40. 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/
43. 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/
44. 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/