Guía de WP-CLI: Administra WordPress desde tu terminal
Categoría:
Desarrollo web para WordPress, WordPress
Fecha:
05/03/2021
Al trabajar con WordPress, la forma más habitual de interactuar con la aplicación para crear nuevos usuarios, posts, cambiar el diseño de la página o realizar actualizaciones es el wp-admin. ¿Alguna vez te has preguntado si existen otras formas de poder trabajar con tu sitio web?
WordPress pone a tu disposición varias interfaces para que puedas interactuar con la aplicación además del ya mencionado y archiconocido wp-admin. Algunas de ellas pueden ser de gran utilidad si necesitas automatizar tareas en tu sitio web o quieres mejorar la eficiencia en tu trabajo diario.
Las interfaces de comunicación con WordPress son, como decíamos, la zona de administración web o wp-admin, el archivo xmlrpc.php (usado frecuentemente para atacar nuestras aplicaciones), la API rest de WordPress y por último, la línea de comandos a través de wp-cli.
En este artículo nos centraremos en esta última forma de trabajar con tu CMS preferido y en cómo puedes sacarle todo el potencial a tu aplicación web a través de esta herramienta.
WP-CLI es la herramienta oficial para interactuar y gestionar sitios web basados en WordPress a través de línea de comandos. Pretende ser un sustituto de wp-admin, permitiendo realizar cualquier gestión que normalmente harías desde el interfaz gráfico, en línea de comandos.
En realidad es incluso más potente, ya que pone a tu disposición alternativas para las que, a través del interfaz gráfico, necesitarías instalar un plugin. Por ejemplo, permite la revisión de tareas cron de WordPress, por lo que puede ayudarte a mantener tu sitio libre de código no imprescindible y hacer que funcione de la forma más rápida y eficiente.
Así, wp-cli te permitirá desde instalar un WordPress hasta realizar todas las gestiones que puedas imaginar, tales como la instalación o borrado de temas y plugins, gestión de usuarios y sus roles y permisos, edición de posts, etc.
Al trabajar con herramientas por terminal, si no tienes experiencia en su uso puede parecerte que son rudimentarias y arcaicas, pero créeme que si los desarrolladores se esfuerzan en crearlas es por su eficiencia y versatilidad.
Por ejemplo, si te dedicas a desarrollar sitios web en WordPress es bastante probable que, de inicio, tengas una colección de plugins preferidos que instalas en casi todos los sitios. Esto puedes hacerlo de forma automática con wp-cli, mientras te preparas un café y piensas en cómo va a ser la interfaz del sitio web, en vez de estar instalando manualmente todos los plugins, uno a uno, con el tiempo que esto consume.
Lo mismo sucede si quieres realizar la actualización de WordPress, con todos sus plugins y el tema en uso. Aunque no es recomendable realizar este tipo de gestiones de forma desatendida, ya que es imprescindible comprobar que todo funciona bien una vez ha finalizado, sí tiene grandes ventajas el uso de wp-cli sobre el interfaz gráfico. Así no dependes de timeouts que puedan producirse debido al servidor web (aun así, sigues dependiendo de los timeouts de PHP, lenguaje de programación con que está escrito WordPress). No digamos ya si tu sitio o un plugin no actualiza correctamente, ya que las opciones sin wp-cli se reducen a restaurar backup y volver a intentarlo, renombrar la carpeta del plugin o pasar a una actualización manual.
Otra de las características que pone a tu disposición es exportar posts y contenidos de tu sitio web o incluso la base de datos entera. ¿Cuántas veces has intentado exportar todos los contenidos y, después de varios minutos de espera mirando la interfaz, has visto que se produce un error? Esto es debido a que, a través de un navegador, dependes de más softwares que tu WordPress; sin embargo, con wp-cli minimizas las herramientas en uso, lo que reduce el riesgo de problemas.
Lo primero que necesitas para comenzar a usar esta herramientas es, evidentemente, instalarla.
Los dos requisitos para poder instalar wp-cli son PHP, entre las versiones 5.4 y 7.4 y acceso por terminal o SSH. En los Hosting Elastico de Raiola Networks y en los Servidores VPS Optimizados cuentas con wp-cli instalado por defecto, por lo que puedes saltarte este paso y continuar en el siguiente.
Si todavía no tienes un producto en Raiola Networks o no es alguno de los mencionados, lo primero que debes hacer es revisar si wp-cli ya está instalado. Para ello busca en el path wp-cli (el path es la ruta donde están los programas ejecutables con terminal). Puedes revisar si wp-cli está instalado en tu path con el siguiente comando:
La salida de este comando te mostrará si existe wp-cli en tu path y cuál es su nombre para poder usarlo. En este ejemplo, como puedes ver, no existe (las 3 líneas dicen que no está en mi path), por lo que voy a instalarlo.
Los pasos a seguir para instalar e incluir wp-cli en tu path son:
Ahora, comprueba de nuevo si wp-cli está ya en tu path y verás que se te devuelve algo como lo siguiente:
Por último, solamente queda comprobar que la instalación ha funcionado. Lo puedes hacer como yo en esta captura:
Ahora vamos a ver los principales subcomandos y para qué sirven. En la última parte de este artículo haremos ejemplos prácticos con algunos de ellos.
Primero vamos a explicar los subcomandos básicos para poder usar una aplicación WordPress, como es la gestión del propio WordPress y sus plugins, temas y usuarios:
Ahora, vamos a revisar los subcomandos de wp-cli para la gestión de usuarios:
El siguiente subgrupo que vamos a tratar te permite la gestión de los contenidos de tu WordPress desde wp-cli:
Si todas las opciones que te ofrece wp-cli por defecto no te parecen suficientes, algunos plugins incluyen sus propias herramientas integradas en terminal. Por ejemplo, WooCommerce, Jetpack o AutoOptimize añaden sus propios subcomandos, lo que te permitirá gestionar dichos plugins desde la terminal.
Y, por si esto fuera poco, se pueden escribir plugins o añadidos para wp-cli que puedes instalar y gestionar desde el subcomando package, lo que te permitirá añadir funcionalidades como comprobaciones del estado de salud de tu sitio.
En resumen, y como habrás visto en caso de haber ejecutado la ayuda de wp-cli que te comentaba anteriormente, las opciones son muy amplias, más incluso de las que he comentado hasta el momento. Existen, además, comandos para la gestión de WordPress multisitio, para darte estructuras precreadas para el desarrollo de plugins o temas, internacionalización, reemplazo de cadenas en base de datos (search-replace), revisión de código, etc.
Si hay alguno de ellos que te interesa revisar y no está en mi explicación anterior, puedes acceder a su ayuda con una ejecución como la siguiente:
Esto mostrará la ayuda específica del subcomando, explicándote cada uno de los argumentos o subopciones que tiene:
La teoría está muy bien, pero la práctica hace al maestro. Ahora que tienes unas nociones básicas de lo que hace wp-cli y sus diferentes subcomandos, es el momento de entrar en faena y ver, sobre el terreno, todas las opciones que pone al alcance de tu mano.
Lo primero que vamos a hacer es instalar WordPress en nuestro servidor. Para ello, debes cambiar al directorio donde apunta tu dominio (por ejemplo, en cPanel, la carpeta public_html para el dominio principal) y ejecutar los 3 comandos que te dejo a continuación:
La ejecución anterior nos dará un WordPress recién instalado en la última versión disponible. Ahora vamos a configurarlo con nuestra zona horaria. El comando “option” nos permite obtener y modificar distintas configuraciones de nuestro sitio web, tanto del propio WordPress como de plugins instalados:
Tendrás que confiar en mí o seguir los pasos que acabo de indicar para comprobar que realmente funciona, pero si ahora accedes a en un navegador (yo he usado este dominio, tú deberás usar el tuyo propio) podrás ver un WordPress recién instalado y listo para funcionar.
Lo primero que voy a hacer con la instalación de WordPress recién creada será activar el modo mantenimiento, para evitar que curiosos puedan acceder mientras realizo todo el trabajo:
Este es el típico modo mantenimiento de WordPress. Quizá prefieras uno un poco más bonito, pero el efecto es el mismo.
Puesto que en mi instalación yo voy a trabajar de administrador pero va a haber gente que contribuya al proyecto creando artículos, vamos a crear un usuario con permisos de autor:
De esta forma, Juan habrá recibido una notificación por correo electrónico de que ya tiene acceso a la nueva instancia de WordPress que acabo de crear y en la que vamos a trabajar.
Vamos ahora a instalar una serie de plugins que voy a necesitar para el proyecto. Me interesan:
Creo que por ahora es suficiente, así que vamos a ello. El comando que tenemos que lanzar para instalar y dejar activos todos los plugins a la vez es:
Podemos comprobar ahora que wp-cli tiene nuevos subcomandos, tal como te decía antes. Si escribo wp --help en mi terminal, puedo ver que tanto yoast-seo como litespeed han incluido sus propios subcomandos. Esto nos ayudará a, por ejemplo, automatizar el purgado de la caché de litespeed.
Lo siguiente es instalar un tema. En este caso, usaré GeneratePress:
Y puesto que el resto de temas no los necesito para nada, los listo y borro con los dos comandos que te dejo a continuación:
Y, ya que estoy limpiando contenidos, voy a borrar los plugins que trae preinstalados y no necesito. Primero los listo y luego los elimino:
Ahora que ya tengo una estructura básica, voy a añadir un menú a mi WordPress y configurarlo como principal:
Y, finalmente y puesto que ya tenemos todos los componentes de la aplicación creados, vamos a añadirle algo de contenido demo, unos cuantos usuarios suscriptores y algunos posts. Podemos hacerlo fácilmente de la siguiente forma:
Como ves, wp-cli es una herramienta tremendamente útil para automatizar despliegues o acelerar gestiones que, de otra forma, te consumiría una cantidad considerable de tiempo mediante las gestiones por terminal. Sin embargo, sus utilidades no quedan aquí.
Si eres un desarrollador o quieres comenzar a navegar un poco en las entrañas de WordPress, wp-cli te servirá para la creación de estructuras básicas para el desarrollo de plugins, temas, etc., mediante su comando scaffold.
Vamos a usarlo para crear la estructura básica de un plugin que, por su nombre, podéis imaginaros lo que hace:
Tras introducir un par de líneas de código en el plugin, este ya cumple con su función: ralentizar la carga de WordPress.
A grandes rasgos puede no parecer el plugin más útil del mundo, pero servirá a modo ilustrativo para el siguiente subcomando que vamos a utilizar, profile.
Si bien profile es un subcomando que está listado como los principales de wp-cli, como podemos ver en su sitio oficial https://developer.wordpress.org/cli/commands/profile/, no viene preinstalado por defecto.
Al igual que algunos plugins nos han creado subcomandos de wp-cli, se pueden extender las funcionalidades de esta herramienta mediante paquetes creados por algunos desarrolladores. Incluso podrías crear alguno para automatizar ciertos procesos repetitivos o con elevados consumos a través del interfaz gráfico, acelerando así un poco más las gestiones.
Bien, como dice la documentación, para instalar el subcomando profile debemos escribir:
Nuevamente, si usamos wp --help veremos que se nos ha añadido otro comando, profile.
Para el ejemplo nos interesan dos subcomandos: stage y hook.
Lo primero que vamos a hacer es analizar en qué consume WordPress su tiempo cuando le pedimos que cargue la página de inicio (podemos testear otras URL con algunos de sus argumentos):
Podemos ver que ‘template’ consume ¡10 segundos! Vamos a analizar qué puede estar provocando esta situación.
Si analizamos cómo funciona template, veremos qué tarda en cargar en esta parte de nuestro WordPress:
Como se aprecia en la captura, el hook wp_head tarda los 10 segundos que habíamos determinado anteriormente. Vamos a determinar el porqué.
Con el subcomando hook podemos ver todos los hooks de WordPress y cuánto tarda en cargar cada uno de ellos. Usaremos el argumento --spotlight para que no nos muestre aquellos cuyos tiempos de carga son irrelevantes:
Nuevamente tenemos información de que hay un hook, en concreto wp_head como ya hemos visto antes, que tarda 10 segundos en cargar. Vamos a navegar en él.
Podemos ver que hay un callback (función, en este caso) llamada stremely_slow_function() que tarda en cargar 10 segundos y cuya ubicación es plugin-realmente-lento/plugin-realmente-lento.php; concretamente, la línea 17.
Si abrimos el archivo, podemos ver que la función hace lo siguiente:
Básicamente, se trata de una función dummy. Simplemente espera 10 segundos antes de hacer nada, por lo que podríamos quitarla de nuestra aplicación, por ejemplo, desactivando el plugin.
Tras desactivar ese plugin tan malo, mi WordPress vuelve a cargar en tiempos normales:
Como has podido ver, wp-cli es una herramienta muy versátil que te permitirá economizar tu tiempo de manera que puedas invertirlo en que tus desarrollos sean más eficientes o ayudarte a encontrar esos cuellos de botella con los que tanto cuesta dar mediante las herramientas que proporciona la interfaz gráfica.
Si necesitas que un experto en WordPress analice tu sitio web, no dudes en contactar con nosotros para que podamos echarte una mano. Disponemos de un departamento especializado que puede revisar todo esto y mucho más.
WordPress pone a tu disposición varias interfaces para que puedas interactuar con la aplicación además del ya mencionado y archiconocido wp-admin. Algunas de ellas pueden ser de gran utilidad si necesitas automatizar tareas en tu sitio web o quieres mejorar la eficiencia en tu trabajo diario.
Las interfaces de comunicación con WordPress son, como decíamos, la zona de administración web o wp-admin, el archivo xmlrpc.php (usado frecuentemente para atacar nuestras aplicaciones), la API rest de WordPress y por último, la línea de comandos a través de wp-cli.
En este artículo nos centraremos en esta última forma de trabajar con tu CMS preferido y en cómo puedes sacarle todo el potencial a tu aplicación web a través de esta herramienta.
Índice del artículo
- Qué es WP-CLI
- Ventajas de WP-CLI
- Cómo instalar WP-CLI
- Comandos de WP-CLI
- Añadiendo comandos a WP-CLI
- Cómo se usa WP-CLI
- Instalar subcomandos de WP-CLI
- Conclusión
Qué es WP-CLI
WP-CLI es la herramienta oficial para interactuar y gestionar sitios web basados en WordPress a través de línea de comandos. Pretende ser un sustituto de wp-admin, permitiendo realizar cualquier gestión que normalmente harías desde el interfaz gráfico, en línea de comandos.
En realidad es incluso más potente, ya que pone a tu disposición alternativas para las que, a través del interfaz gráfico, necesitarías instalar un plugin. Por ejemplo, permite la revisión de tareas cron de WordPress, por lo que puede ayudarte a mantener tu sitio libre de código no imprescindible y hacer que funcione de la forma más rápida y eficiente.
Así, wp-cli te permitirá desde instalar un WordPress hasta realizar todas las gestiones que puedas imaginar, tales como la instalación o borrado de temas y plugins, gestión de usuarios y sus roles y permisos, edición de posts, etc.
Ventajas de WP-CLI
Al trabajar con herramientas por terminal, si no tienes experiencia en su uso puede parecerte que son rudimentarias y arcaicas, pero créeme que si los desarrolladores se esfuerzan en crearlas es por su eficiencia y versatilidad.
Por ejemplo, si te dedicas a desarrollar sitios web en WordPress es bastante probable que, de inicio, tengas una colección de plugins preferidos que instalas en casi todos los sitios. Esto puedes hacerlo de forma automática con wp-cli, mientras te preparas un café y piensas en cómo va a ser la interfaz del sitio web, en vez de estar instalando manualmente todos los plugins, uno a uno, con el tiempo que esto consume.
Lo mismo sucede si quieres realizar la actualización de WordPress, con todos sus plugins y el tema en uso. Aunque no es recomendable realizar este tipo de gestiones de forma desatendida, ya que es imprescindible comprobar que todo funciona bien una vez ha finalizado, sí tiene grandes ventajas el uso de wp-cli sobre el interfaz gráfico. Así no dependes de timeouts que puedan producirse debido al servidor web (aun así, sigues dependiendo de los timeouts de PHP, lenguaje de programación con que está escrito WordPress). No digamos ya si tu sitio o un plugin no actualiza correctamente, ya que las opciones sin wp-cli se reducen a restaurar backup y volver a intentarlo, renombrar la carpeta del plugin o pasar a una actualización manual.
Otra de las características que pone a tu disposición es exportar posts y contenidos de tu sitio web o incluso la base de datos entera. ¿Cuántas veces has intentado exportar todos los contenidos y, después de varios minutos de espera mirando la interfaz, has visto que se produce un error? Esto es debido a que, a través de un navegador, dependes de más softwares que tu WordPress; sin embargo, con wp-cli minimizas las herramientas en uso, lo que reduce el riesgo de problemas.
Cómo instalar WP-CLI
Lo primero que necesitas para comenzar a usar esta herramientas es, evidentemente, instalarla.
Los dos requisitos para poder instalar wp-cli son PHP, entre las versiones 5.4 y 7.4 y acceso por terminal o SSH. En los Hosting Elastico de Raiola Networks y en los Servidores VPS Optimizados cuentas con wp-cli instalado por defecto, por lo que puedes saltarte este paso y continuar en el siguiente.
Si todavía no tienes un producto en Raiola Networks o no es alguno de los mencionados, lo primero que debes hacer es revisar si wp-cli ya está instalado. Para ello busca en el path wp-cli (el path es la ruta donde están los programas ejecutables con terminal). Puedes revisar si wp-cli está instalado en tu path con el siguiente comando:
which wp-cli || which wp-cli.phar || which wp
/usr/bin/which: no wp-cli in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/bin/which: no wp-cli.phar in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/bin/which: no wp in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
root@raiolanetworks.servidordepruebas.com:~ $ which wp-cli || which wp-cli.phar || which wp
/usr/bin/which: no wp-cli in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/bin/which: no wp-cli.phar in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/bin/which: no wp in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
La salida de este comando te mostrará si existe wp-cli en tu path y cuál es su nombre para poder usarlo. En este ejemplo, como puedes ver, no existe (las 3 líneas dicen que no está en mi path), por lo que voy a instalarlo.
Los pasos a seguir para instalar e incluir wp-cli en tu path son:
- Accede por ssh a tu servidor o hosting compartido.
- -Descárgate el binario de wp-cli con el siguiente comando:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
- Comprueba que funciona. Para ello, ejecuta:
php wp-cli.phar --info
- Asígnale permisos de ejecución y muévelo a un directorio dentro de tu path:
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
Ahora, comprueba de nuevo si wp-cli está ya en tu path y verás que se te devuelve algo como lo siguiente:
which wp-cli || which wp-cli.phar || which wp
/usr/bin/which: no wp-cli in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/bin/which: no wp-cli.phar in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/vesta/bin)
/usr/local/bin/wp
Por último, solamente queda comprobar que la instalación ha funcionado. Lo puedes hacer como yo en esta captura:
wp --info
OS: Linux 3.10.0 #1 SMP Tue Jun 9 12:58:54 MSK 2020 x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php
PHP version: 7.2.34
php.ini used: /etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /root
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0
Comandos de WP-CLI
Ahora vamos a ver los principales subcomandos y para qué sirven. En la última parte de este artículo haremos ejemplos prácticos con algunos de ellos.
Primero vamos a explicar los subcomandos básicos para poder usar una aplicación WordPress, como es la gestión del propio WordPress y sus plugins, temas y usuarios:
Core | Permite descargar, instalar, actualizar y gestionar una instalación WordPress. Con este subcomando podremos verificar que nuestro WordPress (al menos el core, no los plugins y temas) no tiene código malicioso o no esperado, comprobar actualizaciones, convertir nuestro WordPress a multisitio u obtener la versión de nuestro WordPress, entre otras opciones. |
Config | Genera o lee el archivo de configuración principal de WordPress, wp-config.php |
Theme | Con este subcomando podemos instalar y desinstalar temas, cambiar el tema activo y actualizar los instalados. |
Plugin | Es la versión del anterior para gestionar plugins, listar todos los instalados, instalarlos, activarlos o desactivarlos, buscar en los repositorios de WordPress o comprobar su integridad contra dichos repositorios. |
Maintenance-mode | Gestión integrada de WordPress para modo mantenimiento. |
DB | Gestiones con la base de datos de Wordpress, como la exportación para hacer copia de seguridad, la actualización, ejecución de consultas u optimizado de la misma. |
Caché | Sirve para controlar la caché de objetos de WordPress. |
Ahora, vamos a revisar los subcomandos de wp-cli para la gestión de usuarios:
User | Gestiona los usuarios, sus roles y permisos, así como la información asociada a los mismos. |
Cap | Gestión de permisos de un rol de usuario. |
Role | Creación y gestión de roles de usuario. También permite resetear sus propiedades al estado por defecto. |
El siguiente subgrupo que vamos a tratar te permite la gestión de los contenidos de tu WordPress desde wp-cli:
Menu | Con esta opción podrás listar, crear o borrar los menús de navegación del tema activo. |
Sidebar | Este subcomando te permite listar los sidebars de WordPresss. Un sidebar es cualquier elemento donde podemos añadir widgets. Vienen definidos en el código del tema. |
Widget | Podrás añadir, eliminar y gestionar widgets en las barras laterales de tu CMS. |
Media | Mediante esta opción podrás importar archivos como adjuntos de forma masiva, regenerar miniaturas y obtener información de las imágenes de tu aplicación. |
Post | Permite gestionar la creación, edición y borrado de posts. |
Comment | Opción usada para la moderación de comentarios, así como hacer un recuento del número de comentarios en un post, toda la aplicación, marcarlos como spam, etc. |
Añadiendo comandos a WP-CLI
Si todas las opciones que te ofrece wp-cli por defecto no te parecen suficientes, algunos plugins incluyen sus propias herramientas integradas en terminal. Por ejemplo, WooCommerce, Jetpack o AutoOptimize añaden sus propios subcomandos, lo que te permitirá gestionar dichos plugins desde la terminal.
Y, por si esto fuera poco, se pueden escribir plugins o añadidos para wp-cli que puedes instalar y gestionar desde el subcomando package, lo que te permitirá añadir funcionalidades como comprobaciones del estado de salud de tu sitio.
En resumen, y como habrás visto en caso de haber ejecutado la ayuda de wp-cli que te comentaba anteriormente, las opciones son muy amplias, más incluso de las que he comentado hasta el momento. Existen, además, comandos para la gestión de WordPress multisitio, para darte estructuras precreadas para el desarrollo de plugins o temas, internacionalización, reemplazo de cadenas en base de datos (search-replace), revisión de código, etc.
Si hay alguno de ellos que te interesa revisar y no está en mi explicación anterior, puedes acceder a su ayuda con una ejecución como la siguiente:
wp search-replace --help
Esto mostrará la ayuda específica del subcomando, explicándote cada uno de los argumentos o subopciones que tiene:
Cómo se usa WP-CLI
La teoría está muy bien, pero la práctica hace al maestro. Ahora que tienes unas nociones básicas de lo que hace wp-cli y sus diferentes subcomandos, es el momento de entrar en faena y ver, sobre el terreno, todas las opciones que pone al alcance de tu mano.
Lo primero que vamos a hacer es instalar WordPress en nuestro servidor. Para ello, debes cambiar al directorio donde apunta tu dominio (por ejemplo, en cPanel, la carpeta public_html para el dominio principal) y ejecutar los 3 comandos que te dejo a continuación:
wp core download
wp config create --dbname='wpcli_wp1' --dbuser='wpcli_wp1' --dbpass='claveAccesoBBDDWordpress'
wp core install --url='https://instalacion-wp-cli.tld' --title='Mi Blog' --admin_user='Fran' --admin_password='claveAccesoWordpress' --admin_email='fran@instalacion-wp-cli.tld' --skip-email --path=$(pwd)
La ejecución anterior nos dará un WordPress recién instalado en la última versión disponible. Ahora vamos a configurarlo con nuestra zona horaria. El comando “option” nos permite obtener y modificar distintas configuraciones de nuestro sitio web, tanto del propio WordPress como de plugins instalados:
wp option update timezone_string Europe/Madrid
Tendrás que confiar en mí o seguir los pasos que acabo de indicar para comprobar que realmente funciona, pero si ahora accedes a en un navegador (yo he usado este dominio, tú deberás usar el tuyo propio) podrás ver un WordPress recién instalado y listo para funcionar.
Lo primero que voy a hacer con la instalación de WordPress recién creada será activar el modo mantenimiento, para evitar que curiosos puedan acceder mientras realizo todo el trabajo:
wp maintenance-mode activate
Este es el típico modo mantenimiento de WordPress. Quizá prefieras uno un poco más bonito, pero el efecto es el mismo.
Puesto que en mi instalación yo voy a trabajar de administrador pero va a haber gente que contribuya al proyecto creando artículos, vamos a crear un usuario con permisos de autor:
wp user create 'Juan' 'juan@instalacion-wp-cli.tld' --role=author --user_nicename=Juan --send-email
De esta forma, Juan habrá recibido una notificación por correo electrónico de que ya tiene acceso a la nueva instancia de WordPress que acabo de crear y en la que vamos a trabajar.
Vamos ahora a instalar una serie de plugins que voy a necesitar para el proyecto. Me interesan:
- LiteSpeed para mejorar el rendimiento de mi aplicación. Es el plugin de caché recomendado en Hosting Compartidos de Raiola Networks.
- Contact Form para la creación de formularios de manera sencilla.
- HoneyPot como sistema antispam para proteger los formularios por defecto de WordPress.
- YoastSeo para la gestión de metaetiquetas en los distintos posts.
Creo que por ahora es suficiente, así que vamos a ello. El comando que tenemos que lanzar para instalar y dejar activos todos los plugins a la vez es:
wp plugin install --activate litespeed-cache contact-form-7 honeypot-antispam wordpress-seo
Podemos comprobar ahora que wp-cli tiene nuevos subcomandos, tal como te decía antes. Si escribo wp --help en mi terminal, puedo ver que tanto yoast-seo como litespeed han incluido sus propios subcomandos. Esto nos ayudará a, por ejemplo, automatizar el purgado de la caché de litespeed.
Lo siguiente es instalar un tema. En este caso, usaré GeneratePress:
wp theme install generatepress --activate
Y puesto que el resto de temas no los necesito para nada, los listo y borro con los dos comandos que te dejo a continuación:
wp theme list
wp theme delete twentynineteen twentytwenty twentytwentyone
Y, ya que estoy limpiando contenidos, voy a borrar los plugins que trae preinstalados y no necesito. Primero los listo y luego los elimino:
wp plugin list
wp plugin delete hello akismet
Ahora que ya tengo una estructura básica, voy a añadir un menú a mi WordPress y configurarlo como principal:
wp menu create 'Main_menu'
wp menu location assign Main_menu primary
Y, finalmente y puesto que ya tenemos todos los componentes de la aplicación creados, vamos a añadirle algo de contenido demo, unos cuantos usuarios suscriptores y algunos posts. Podemos hacerlo fácilmente de la siguiente forma:
wp user generate --count=5 --role=subscriber
wp post generate --count=3 --post_content <<< $(curl -s -N http://loripsum.net/api/2 )
Si ahora quisiera automatizar los despliegues (instalaciones y configuraciones iniciales) de WordPress, solo tengo que juntar todos los comandos anteriores en un archivo y darle permisos de ejecución. Cada vez que lo use, realizará todo el proceso sin esfuerzo y dejándome el terreno listo para comenzar el trabajo.
Como ves, wp-cli es una herramienta tremendamente útil para automatizar despliegues o acelerar gestiones que, de otra forma, te consumiría una cantidad considerable de tiempo mediante las gestiones por terminal. Sin embargo, sus utilidades no quedan aquí.
Si eres un desarrollador o quieres comenzar a navegar un poco en las entrañas de WordPress, wp-cli te servirá para la creación de estructuras básicas para el desarrollo de plugins, temas, etc., mediante su comando scaffold.
Vamos a usarlo para crear la estructura básica de un plugin que, por su nombre, podéis imaginaros lo que hace:
wp scaffold plugin plugin-realmente-lento --plugin_description='Plugin para ralentizar la aplicación WordPress'
Tras introducir un par de líneas de código en el plugin, este ya cumple con su función: ralentizar la carga de WordPress.
A grandes rasgos puede no parecer el plugin más útil del mundo, pero servirá a modo ilustrativo para el siguiente subcomando que vamos a utilizar, profile.
Instalar subcomandos de WP-CLI
Si bien profile es un subcomando que está listado como los principales de wp-cli, como podemos ver en su sitio oficial https://developer.wordpress.org/cli/commands/profile/, no viene preinstalado por defecto.
Al igual que algunos plugins nos han creado subcomandos de wp-cli, se pueden extender las funcionalidades de esta herramienta mediante paquetes creados por algunos desarrolladores. Incluso podrías crear alguno para automatizar ciertos procesos repetitivos o con elevados consumos a través del interfaz gráfico, acelerando así un poco más las gestiones.
Bien, como dice la documentación, para instalar el subcomando profile debemos escribir:
wp package install wp-cli/profile-command
Nuevamente, si usamos wp --help veremos que se nos ha añadido otro comando, profile.
Para el ejemplo nos interesan dos subcomandos: stage y hook.
Lo primero que vamos a hacer es analizar en qué consume WordPress su tiempo cuando le pedimos que cargue la página de inicio (podemos testear otras URL con algunos de sus argumentos):
wp profile stage --fields=stage,time,query_time,hook_time,request_time
Podemos ver que ‘template’ consume ¡10 segundos! Vamos a analizar qué puede estar provocando esta situación.
Si analizamos cómo funciona template, veremos qué tarda en cargar en esta parte de nuestro WordPress:
wp profile stage template --fields=hook,callback_count,time,query_time
Como se aprecia en la captura, el hook wp_head tarda los 10 segundos que habíamos determinado anteriormente. Vamos a determinar el porqué.
Con el subcomando hook podemos ver todos los hooks de WordPress y cuánto tarda en cargar cada uno de ellos. Usaremos el argumento --spotlight para que no nos muestre aquellos cuyos tiempos de carga son irrelevantes:
wp profile hook --spotlight --fields=hook,time,query_time,request_time
Nuevamente tenemos información de que hay un hook, en concreto wp_head como ya hemos visto antes, que tarda 10 segundos en cargar. Vamos a navegar en él.
wp profile hook wp_head --spotlight --fields=callback,time
Podemos ver que hay un callback (función, en este caso) llamada stremely_slow_function() que tarda en cargar 10 segundos y cuya ubicación es plugin-realmente-lento/plugin-realmente-lento.php; concretamente, la línea 17.
Si abrimos el archivo, podemos ver que la función hace lo siguiente:
function function_realmente_lenta() {
sleep(10);
}
Básicamente, se trata de una función dummy. Simplemente espera 10 segundos antes de hacer nada, por lo que podríamos quitarla de nuestra aplicación, por ejemplo, desactivando el plugin.
wp plugin deactivate plugin-realmente-lento
Tras desactivar ese plugin tan malo, mi WordPress vuelve a cargar en tiempos normales:
wp profile stage
Conclusión
Como has podido ver, wp-cli es una herramienta muy versátil que te permitirá economizar tu tiempo de manera que puedas invertirlo en que tus desarrollos sean más eficientes o ayudarte a encontrar esos cuellos de botella con los que tanto cuesta dar mediante las herramientas que proporciona la interfaz gráfica.
Si necesitas que un experto en WordPress analice tu sitio web, no dudes en contactar con nosotros para que podamos echarte una mano. Disponemos de un departamento especializado que puede revisar todo esto y mucho más.
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *