X

Las Herramientas Avanzadas de Gestión de WordPress CLI que no se conocen

WordPress CLI son herramientas avanzadas de linea de comandos para gestionar instalaciones de WordPress y ejecutar tareas por programación

WordPress CLI o WP-CLI son una serie de herramientas de linea de comandos que se instalan en el servidor. Las herramientas de WordPress CLI ayudan a gestionar las tareas más comunes que se suelen hacer sobre una página web en WordPress mediante programación o mediante la linea de comandos o shell. Una de las ventajas de WP-CLI es que se pueden crear mediante programación de scripts en shell script desde la consola de Linux o en cualquier otro lenguaje de programación para ejecutar tareas en WordPress de forma automatizada. También es posible conectar WP-CLI a un servidor remoto por SSH o a un contenedor de docker, docker-compose o Vagrant.

Para instalar las herramienta de linea de comandos de WordPress es necesario tener acceso SSH al servidor como administrador. La instalación del WP-CLI es muy fácil. Tras conectarse por SSH al servidor, lo primero que se debe hacer es descargar WP-CLI, para ello se utiliza el siguiente comando

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Se le cambian los permisos de ejecución al fichero descargado

chmod +x wp-cli.phar

y por último se mueve a la carpeta de comandos del servidor

sudo mv wp-cli.phar /usr/local/bin/wp

Con esto ya esta listo y se dispone de un nuevo comando en la consola: wp. Ahora ya se pueden ejecutar acciones sobre las instalaciones WordPress del servidor o sobre otro servidor remoto.

Comandos de las herramientas de gestión de WordPress CLI

Para mostrar los comandos de la herramienta de linea de comandos de WordPress se puede ejecutar la ayuda de WP-CLI.

wp help --allow-root

El parámetro –allow-root se debe incluir en todos los comandos si se esta conectado como usuario root al servidor, sino no es necesario. Al ejecutar la ayuda dice de ejecutar wp <comando> para gestionar las instalaciones de wordpress de la linea de comandos. Estos son los comandos de WP-CLI que actualmente aparecen al ejecutar la ayuda de las herramientas de gestion de WordPress en línea de comandos o CLI:

  • cache Manipula el objeto de Cache de WP.
  • cap Añade, elimina, y lista capacidades de un rol de usuario.
  • checksum Verifica la integridad de los ficheros comparandolas con los checksums publicados.
  • cli Muestra información sobre WP-CLI, comprueba actualizaciones, o muestra los alias definidos.
  • comment Crea, actualiza, elimina, y modera comentarios.
  • config Gestiona el fichero de configuración wp-config.php.
  • core Descarga, instala, actualiza y gestiona instalaciones de WordPress.
  • cron Gestiona eventos y horarios del WP-Cron.
  • db Perform basic database operations using credentials stored in wp-config.php.
  • eval Ejecuta código PHP.
  • eval-file Carga y ejecuta un fichero PHP.
  • export Exporta el contenido de WordPress a un fichero WXR.
  • help Muestra la ayuda de WP-CLI, o de un comando especifico.
  • import Importa contenido desde un fichero WXR.
  • language Gestiona el idioma del nucleo.
  • media Importa archivos media como adjuntos, regenera miniaturas, lista los tamaños de imagen registrados.
  • menu Lista, crea, asigna, y elimina los menus activos en el tema.
  • network
  • option Lista y guarda las opciones del sitio, incluyendo los plugins y los ajustes de WordPress.
  • package Ejecuta los comandos de gestion de paquetes de WP-CLI.
  • plugin Gestiona los plugins, incluyendo instalaciones, activaciones, y actualizaciones.
  • post Gestiona las entradas, contenidos y metas.
  • post-type Devuelve los detalles de los tipos de entradas registrados.
  • rewrite Lista o vacía la lista de reglas de reescritura, actualiza la estructura de enlaces permanentes.
  • role Administra los roles de usuario, incluyendo crear nuevos roles y restaurar las por defecto.
  • scaffold Genera código para los tipos de entradas, taxonomias, plugins, temas, etc.
  • search-replace Busca/Remplaza cadenas de texto en la base de datos.
  • server Lanza un servidor web basado en PHP para la instalación especifica.
  • shell Abre una consola PHP para ejecutar y probar código PHP.
  • sidebar Lista las sidebars registradas.
  • site Realiza operaciones en una instalación multisitio.
  • super-admin Lista, añade, o elimina usuarios super admin en instalaciones multisitio.
  • taxonomy Recupera información sobre taxonomías registradas.
  • term Administra taxonomías y metas, con comandos de creación, borrado, y listado.
  • theme Administra los temas del sitio, incluyendo instalaciones, activaciones, and updates.
  • transient Manipula la cache transitoria de WordPress.
  • user Administra usuarios, junto con sus roles, capacidades y metas.
  • widget Gestiona los widgets, incluyendo añadir y mover las sidebars.

Se puede utilizar el comando help de WordPress CLI para ampliar la información de cada uno de los comandos. Para mostrar más información sobre el comando db se puede escribir y ejecutar por ejemplo:

wp help db --allow-root
 

Backups automáticos de la base de datos de WordPress con WP-CLI

Una vez leída la ayuda del comando db de WordPress CLI se puede observar por ejemplo, que es posible exportar un backup de la base de datos con el comando

wp db export backup.sql

Por norma general, es necesario acceder al directorio donde están los archivos de la instalación de wordpress y donde se desea ejecutar. Esto es así poque WP-CLI coge los parámetros de conexión del fichero wp-config.php para ejecutar la cadena de conexión de la base de datos. La ruta de instalacion depende de cada alojamiento web, pero podría ser por ejemplo /var/www/html/ o /home/dominio/public_html/. A la hora de ejecutar el WordPress CLI también es posible incluir el parámetro –path=ruta para que lo ejecute sin necesidad de entrar en cada instalación.

wp --path=/home/sitio1/public_html --allow-root db export backup.sql

Por lo tanto es posible generar un script del tipo:

#!/bin/bash
declare -a sites=('/home/site1/public_html' '/home/site2/public_html')
for site in "${sites[@]}";
do
find="/"
replace="_"
filename=${site////_}
NOW=$(date +"%m-%d-%Y")
wp --path=$site --allow-root db export backup$filename-$NOW.sql
done

Este script tiene dos rutas a dos instalaciones de WordPress distintas y ejecuta el comando para hacer un backup de cada una de las bases de datos y guardarlos en el directorio del script.

Si se guarda este script backups_wordPress.sh, se le da permisos de ejecución chmod +x backups_wordPress.sh y si ejecuta ./backups_wordPress.sh se obtienen los dos archivos de backup de sql de las instalaciones. Si este fichero se añade como cron, pues se dispone de backups automáticos de las instalaciones de WordPress.

Como se ve con el ejemplo con Shell Script y WP-CLI es fácil ejecutar prácticamente cualquier comando de forma desatendida. Pero todavía hay más que esto, wp-cli es posible ejecutarlo desde otros lenguajes de programación como PHP o mediante el paquete de npm wp-cli para node.js.

 

Algunos de los comandos de WordPress CLI probados

Ejecutar el cron de WordPress

wp --allow-root cron event run --due-now

Crear un backup de la base de datos de WordPress

wp --allow-root db export backup.sql

Actualizar WordPress

wp --allow-root core update
wp --allow-root core update-db

Descargar WordPress

wp --allow-root core download

Descargar WordPress en Español

wp --allow-root core download --locale=es_ES

Mostrar los plugins instalados

wp --allow-root plugin status

Listar lost post de WordPress

wp --allow-root post list

Mostrar el listado de comentarios

wp --allow-root comment list

Existen muchas posibilidades con las herramientas de WP-CLI, incluso crear comandos propios y al juntarlo con otros lenguajes de programación, las posibilidades de las herramientas de linea de comandos de WordPress son interminables.

 

Crons programados para ejecutar el cron de WordPress

Antes de añadir un cron de este tipo se debe añadir la línea en el fichero wp-config.php

define('DISABLE_WP_CRON', true);

Cron con WP-CLI

*/10 * * * * wp --path=/home/site1/public_html --allow-root cron event run --due-now > /dev/null 2>&1

Sin WP-CLI usando Curl, este tiene el problema si se bloquean las conexiones desde fuera que tiene algo más de configuración

*/10 * * * * curl -k http://www.site1.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Sin WP-Cli utilizando WGET, pasa lo mismo que en el caso anterior con el bloqueo

*/10 * * * * wget --no-check-certificate https://www.josebernalte.com/wp-cron.php?doing_wp_cron=1

Sin WP-CLI usando directamente PHP

*/10 * * * * php /home/site1/public_html/wp-cron.php > /dev/null 2>&1

Descarga este artículo como un e-book

Categorias: Sistemas
Jose Bernalte :