A lo largo de los años, los desarrolladores de WordPress han creado y mantenido WP-CLI, una sólida interfaz de línea de comandos diseñada específicamente para las operaciones de WordPress. Como herramienta que ahorra tiempo, WP-CLI es especialmente adecuada para gestionar redes de WordPress Multisitio, que permiten ejecutar varios sitios en una única instalación de WordPress.
Para utilizar WP-CLI con eficacia, es esencial comprender los componentes clave de WordPress: la interfaz de administración, la estructura de archivos y la base de datos. Sin estos conocimientos básicos, WP-CLI puede no ser tan eficaz o beneficioso.
Aunque WP-CLI admite comandos estándar como instalar, actualizar, activar, desactivar y eliminar plugins o temas, sus capacidades van mucho más allá de lo que está disponible en el panel de administración de WordPress, lo que la convierte en una herramienta muy versátil para la gestión avanzada de sitios.
Este artículo explica cómo utilizar WP-CLI para gestionar redes de WordPress Multisitio de forma eficiente y proporciona ejemplos prácticos para ayudarte a empezar.
¿Qué es WP CLI y por qué utilizarlo?
WP-CLI es una potente herramienta para gestionar sitios de WordPress a través de la línea de comandos. En un entorno multisitio, puede simplificar significativamente la gestión de una red, permitiéndote realizar acciones en lote y agilizar tu flujo de trabajo.
Su verdadera fuerza reside en su flexibilidad y extensibilidad — puedes ejecutar comandos sin esfuerzo en toda la red o dirigirte a sitios específicos, además de mejorar su funcionalidad con una variedad de paquetes WP-CLI disponibles en GitHub y otros repositorios.
Los desarrolladores suelen crear comandos WP-CLI personalizados para simplificar tareas repetitivas. Por ejemplo, puedes utilizar WP-CLI para crear código repetitivo para temas y plugins, ahorrando tiempo y esfuerzo durante el desarrollo.
Si te alojas con Kinsta, WP-CLI está integrado y es accesible a través de SSH, lo que te permite gestionar sitios de WordPress sin esfuerzo. Para el desarrollo local, WP-CLI está disponible en DevKinsta a través del contenedor devkinsta_fpm
. Una vez dentro del contenedor, puedes navegar a la carpeta de tu sitio y ejecutar comandos. Aunque esto requiere un poco de configuración, proporciona una forma eficaz de gestionar tus sitios locales de WordPress para depurar, probar o desplegar.
Antes de empezar
Los comandos destacados en este artículo se han elegido cuidadosamente por su uso frecuente por parte de los desarrolladores y administradores de WordPress Multisitio.
WP-CLI es una herramienta amplia y flexible, por lo que es imposible abarcar todos los comandos disponibles. Para mantener las cosas claras y prácticas, nos hemos centrado en ejemplos sencillos y prácticos para ayudarte a empezar.
Dado que WP-CLI se basa en comandos Unix, es posible que no encuentres un equivalente WP-CLI para comandos que ya existen en Unix.
Notas clave sobre WP-CLI
La estructura de comandos de WP-CLI es flexible, permitiendo múltiples formas de conseguir el mismo resultado. Por ejemplo, los dos ejemplos siguientes son válidos:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
O:
wp user create johndoe --display_name="John Doe" [email protected] --nickname="Johnny"
El orden de las banderas, los parámetros y los valores no importa una vez que se han indicado el comando y el subcomando.
Buenas prácticas para ejecutar comandos WP-CLI
Sigue estas buenas prácticas para evitar posibles problemas:
- Ten siempre a mano una copia de seguridad actualizada, sobre todo porque algunos de estos comandos alterarán permanentemente tu(s) sitio(s).
- Utiliza un sitio staging siempre que sea posible. Si utilizas Kinsta, cada instalación de WordPress incluye un entorno staging gratuito para realizar pruebas de forma segura. Puedes transferir fácilmente los cambios entre los entornos staging y los entornos en producción.
- Utiliza la bandera
--dry-run
para probar los cambios en la base de datos antes de aplicarlos.
Comandos WP-CLI esenciales para la gestión de WordPress Multisitio
Los comandos WP-CLI en una red Multisitio pueden dirigirse a diferentes niveles de acción:
- En toda la red: Comandos que se aplican a todos los sitios de la red. Por ejemplo:
wp plugin deactivate --network --all
Este comando desactiva todos los plugins en todos los sitios de la red.
- Sitio principal: Comandos que se aplican al sitio principal creado durante la configuración del Multisitio. Por ejemplo:
wp plugin list
El comando anterior lista todos los plugins instalados sólo en el sitio principal.
- Sitios secundarios: Comandos dirigidos a sitios individuales dentro de la red, especificados por sus URL. Por ejemplo:
wp plugin update --url=mysite.example.com akismet
Este comando actualiza el plugin
akismet
en el sitiomysite.example.com
.
Para facilitar la gestión de tu red Multisitio, hemos agrupado los comandos WP-CLI en estas secciones:
Comandos básicos
Estos comandos fundamentales ayudan a solucionar problemas y gestionar plugins y temas en toda tu red.
Trabajar con listas
WP-CLI facilita la obtención de listas de plugins y otros componentes en tu entorno Multisitio.
- Obtener una lista de todos los plugins de la red:
wp plugin list --network
Salida: Muestra todos los plugins instalados en la red con detalles como nombre, estado, actualizaciones disponibles y versión.
- Filtra los plugins por estado (por ejemplo, activo):
wp plugin list --network --status=active
Salida: Una tabla de los plugins activos en la red.
- Obtén una lista de plugins del sitio primario:
wp plugin list
Salida: Una lista de plugins del sitio primario.
- Obtener una lista de plugins activos para un único sitio:
wp plugin list --url=<site-url> --status=active
Ejemplo de entrada:
wp plugin list --url=blog.example.com --status=active
Salida: Una tabla de plugins activos para el sitio
blog.example.com
.
Además de filtrar los plugins por status=active
, también puedes utilizar los siguientes filtros:
inactive
: Plugins instalados pero no activos.active-network
: Plugins activos en la red.must-use
: Plugins de uso obligatorio que se cargan automáticamente.
Desactivar plugins
Desactivar plugins suele ser necesario cuando se solucionan problemas o se preparan actualizaciones. WP-CLI te permite desactivar plugins en toda la red o para sitios específicos.
- Desactivar todos los plugins de la red:
wp plugin deactivate --network --all
Resultado: Se desactivan todos los plugins de la red.
- Desactivar plugins específicos para un solo sitio:
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Ejemplo de entrada:
wp plugin deactivate akismet hello-dolly --url=blog.example.com
Resultado: Los plugins
akismet
yhello-dolly
están desactivados para el sitioblog.example.com
.
Activar plugins
Utiliza estos comandos para activar plugins en toda la red o para sitios individuales en tu configuración Multisitio.
- Activar todos los plugins de la red:
wp plugin activate --network --all
Resultado: Se activan todos los plugins de la red.
- Activar plugins específicos para un solo sitio:
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Ejemplo de entrada:
wp plugin activate akismet hello-dolly --url=blog.example.com
Resultado: Los plugins
akismet
yhello-dolly
están activados para el sitioblog.example.com
.
Instalar plugins
Instalar plugins con WP-CLI es rápido y eficaz. Una vez instalados, los plugins pueden activarse para sitios individuales o para toda la red.
El siguiente comando se puede utilizar para instalar un plugin para la red:
wp plugin install <plugin-slug>
Ejemplo de entrada:
wp plugin install akismet
Resultado: El plugin akismet
está instalado y listo para ser activado.
Actualizar plugins
Mantén tus plugins actualizados en toda tu red o para sitios específicos utilizando estos comandos.
- Actualiza todos los plugins de la red:
wp plugin update --network --all
Resultado: Se actualizan todos los plugins de la red.
- Actualiza plugins específicos en toda la red:
wp plugin update <plugin-slug-1> <plugin-slug-2> --network
Ejemplo de entrada:
wp plugin update akismet jetpack bbpress --network
Resultado: Los plugins
akismet
,jetpack
, ybbpress
se actualizan en la red. - Actualiza un plugin para un solo sitio:
wp plugin update --url=<site-url> <plugin-slug>
Ejemplo de entrada:
wp plugin update --url=blog.example.com hello-dolly
Resultado: El plugin
hello-dolly
se actualiza para el sitioblog.example.com
.
Eliminar plugins
Eliminar plugins es sencillo con WP-CLI, tanto si trabajas en un solo sitio como en una red Multisitio.
- Elimina un plugin del contexto actual de WordPress (red o sitio):
wp plugin delete <plugin-slug>
Ejemplo de entrada:
wp plugin delete bbpress
Resultado: Se borra el plugin
bbpress
. - Eliminar un plugin para un sitio específico en un Multisitio:
wp plugin delete <plugin-slug> --url=<site-url>
Ejemplo de entrada:
wp plugin delete bbpress --url=blog.example.com
Resultado: El plugin
bbpress
se elimina del sitioblog.example.com
.
Gestión de la red
Gestionar sitios dentro de una red de WordPress Multisitio es una tarea crucial. A continuación encontrarás comandos comunes de WP-CLI que te ayudarán a crear, gestionar y eliminar sitios de forma eficiente, así como a gestionar las operaciones de almacenamiento en caché.
Crear sitios
Añadir nuevos sitios a tu red es sencillo con WP-CLI.
- Comando básico: Crea un nuevo sitio especificando un slug único.
wp site create --slug=<site-name>
Ejemplo de entrada:
wp site create --slug=blog
Resultado: Se crea un nuevo sitio
blog.example.com
oexample.com/blog
, dependiendo de tu configuración de red, y se activa automáticamente. - Comando avanzado: Alternativamente, se pueden añadir banderas al comando. En el siguiente ejemplo, se añade un sitio con un título de sitio y un administrador de sitio especificados.
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>
Ejemplo de entrada:
wp site create --slug=blog --title="Blog Site" [email protected]
Resultado: Se crea un sitio titulado «Blog Site» con
[email protected]
como administrador. - Listar todos los sitios: Recupera una tabla que muestre los ID de los sitios, las URL, las fechas de creación y las fechas de última actualización:
wp site list
También puedes refinar la lista de sitios para obtener sólo las URL de todos los sitios de la red:
wp site list --field=url
Salida: Una lista de URLs de cada sitio.
Vaciar y borrar sitios
- Vacía el sitio principal:
wp site empty
Salida: Aparece una solicitud de confirmación para borrar todo el contenido del sitio principal.
- Vaciar un único sitio (elimina todas las entradas, páginas, enlaces y taxonomías):
wp site empty --url=<site-url>
Ejemplo de entrada:
wp site empty --url=blog.example.com
Resultado: Se elimina todo el contenido de
blog.example.com
, pero el sitio permanece intacto. - Vacía todos los sitios de la red:
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes
Resultado: Este comando inicia un bucle a través de todas las URLs y luego procede a vaciar el contenido de cada sitio sin necesidad de proporcionar aprobación para cada sitio.
- Borrar un único sitio por ID:
wp site delete <site-id>
Ejemplo de entrada:
wp site delete 5
Resultado: Se borra el sitio con ID
5
. - Borrar varios sitios con bypass de confirmación:
wp site delete 2 --yes wp site delete 3 --yes
Resultado: Se eliminan los sitios con ID
2
y3
. La bandera--yes
ayuda a saltarse los avisos.
Borrar el caché
Como aquí se almacenan muchos tipos de caché de distintas formas, utilizamos el plugin Kinsta Must-Use. Se instala automáticamente para cada sitio de WordPress en nuestro sistema.
Esto borra todo el caché, incluyendo el caché del sitio, el caché Edge, el caché CDN y el caché Redis.
- Borra todo el caché (del sitio, edge, CDN y Redis):
wp kinsta cache purge --all
- Borra sólo el caché del sitio:
wp kinsta cache purge --site
- Purgar caché CDN:
wp kinsta cache purge --cdn
- Purgar caché de objetos:
wp cache purge
Gestión de usuarios
WP-CLI simplifica la gestión de usuarios en un entorno Multisitio, permitiéndote realizar tareas de forma rápida y eficaz. Esta sección cubre las operaciones comunes de gestión de usuarios:
Listar usuarios
Listar usuarios en una red o en un sitio concreto es sencillo con WP-CLI.
- Lista todos los usuarios de la red:
wp user list --network
Salida: Una tabla que muestra el ID de usuario, el inicio de sesión, el nombre para mostrar, el nombre de usuario, la fecha de registro y el rol de cada usuario o consulta de la lista de usuarios.
- Lista de usuarios del sitio principal:
wp user list
Resultado: Muestra una tabla de usuarios para el sitio principal.
- Lista los usuarios de un sitio concreto (sitio secundario):
wp user list --blog_id=<id> wp user list --url=<url>
Ejemplo de entrada:
wp user list --blog_id=6
Resultado: Muestra una tabla de todos los usuarios del sitio con ID de Blog
6
.
Crear usuarios
En una red Multisitio, los usuarios se registran en la red por defecto. Sus funciones dependen de si son el primer usuario añadido a un sitio o usuarios posteriores. Los nombres de usuario deben tener al menos cuatro caracteres.
- Añade un nuevo usuario al sitio principal:
wp user create <username> <email>
Ejemplo de entrada:
wp user create johndoe [email protected]
Salida: Se muestra un mensaje de éxito, incluyendo una contraseña generada.
- Añade un nuevo usuario a un sitio específico con un rol especificado:
wp user create <username> <email> --role=<role> --url=<url>
Ejemplo de entrada:
wp user create janedoe [email protected] --role=editor --url=blog.example.com
Salida: El usuario
janedoe
se añade al sitioblog.example.com
como «Editor». - Añade metadatos de la cuenta de usuario durante la creación:
wp user create <username> <email> --display_name=<name> --nickname=<nickname>
Ejemplo de entrada:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Resultado: Se crea el usuario
johndoe
con un nombre para mostrarJohn Doe
y un apodoJohnny
.
Actualizar usuario
Actualizar la información del usuario, como los roles o las contraseñas, es rápido con WP-CLI.
- Cambia (asciende o desciende) los roles de usuario:
wp user update <username|email|user_id> --role=<role>
Ejemplo de entrada:
wp user update johndoe janedoe adminuser --role=super-administrator
Resultado: Los usuarios
johndoe
,janedoe
, yadminuser
son ascendidos a Superadministradores. - Restablece o cambia la contraseña de un usuario:
wp user update <username> --user_pass=<new_password>
Ejemplo de entrada:
wp user update johndoe --user_pass=securePassword2024
Resultado: Se actualiza la contraseña de
johndoe
. - Comandos encadenados: WP-CLI te permite combinar varias acciones en un solo comando, ahorrando tiempo al editar usuarios. Por ejemplo, puedes actualizar simultáneamente la contraseña y el rol de un usuario.
wp user update <user> --user_pass=<new_password> --role=<status>
Ejemplo de entrada:
wp user update johndoe --user_pass="newPassword2024" --role=editor
Resultado: La contraseña del usuario
johndoe
se actualiza anewPassword2024
, y su rol cambia a «Editor».
Gestionar meta de usuario
La meta de usuario te permite añadir, recuperar o eliminar metadatos de las cuentas de usuario.
- Obtener meta de usuario:
wp user meta get <username> <meta_key>
Ejemplo de entrada:
wp user meta get johndoe nickname
Salida: Muestra el valor de la meta clave
nickname
para el usuariojohndoe
. - Añade datos meta del usuario:
wp user meta add <username> <meta_key> <meta_value>
Ejemplo de entrada:
wp user meta add johndoe display_name "Mr. John Doe"
Resultado:
Mr. John Doe
se establece como nombre para mostrar del usuariojohndoe
. - Borrar datos meta del usuario:
wp user meta delete <username> <meta_key>
Ejemplo de entrada:
wp user meta delete johndoe display_name
Resultado: Este comando borra la metaclave
display_name
del usuariojohndoe
.
Eliminar usuarios
Eliminar usuarios de la red o de sitios específicos es eficiente con WP-CLI.
- Elimina un usuario de la red:
wp user delete <username|user_id> --network
Ejemplo de entrada:
wp user delete johndoe --network
Resultado: El usuario
johndoe
es eliminado de la red. - Eliminar un usuario de un sitio concreto:
wp user delete <username|user_id> --url=<site-url>
Ejemplo de entrada:
wp user delete johndoe --url=mysite.example.com
Resultado: El usuario
johndoe
es eliminado del sitiomysite.example.com
.
Gestión de bases de datos
WP-CLI proporciona una potente alternativa a herramientas como phpMyAdmin para gestionar tu base de datos. Esta sección aborda las operaciones habituales con la base de datos que puedes realizar con WP-CLI:
Exportar una base de datos
Con WP-CLI, puedes exportar tu base de datos como un archivo SQL. El archivo exportado se guarda en el directorio raíz de tu instalación de WordPress.
wp db export
Resultado: Se crea un archivo SQL en el directorio raíz.
Si el archivo exportado tiene un nombre inapropiado, puedes renombrarlo utilizando el siguiente comando:
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Ejemplo de entrada:
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Resultado: El archivo cilawaw…nPb--9545b3f.sql
pasa a llamarse network-db.sql
.
Descargar una base de datos
Para descargar el archivo de base de datos exportado a tu máquina local, utiliza el comando curl
.
curl <remote-url> -o <local-path>
Ejemplo de entrada:
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
Resultado: El archivo network-db.sql
se descarga en tu directorio local Downloads
.
Cargar una base de datos
Puedes subir un archivo de base de datos al directorio raíz de tu instalación Multisitio utilizando el comando scp
.
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
Ejemplo de entrada:
scp ~/Downloads/network-db.sql [email protected]:/var/www/example.com/public_html
Resultado: El archivo network-db.sql
se carga en el directorio raíz de tu instalación de WordPress tras la autenticación.
Importar una base de datos
Antes de importar una base de datos, puede que necesites restablecer las tablas de datos existentes.
- Restablecer tablas de datos:
wp db reset
Resultado: Se vacían todas las tablas de datos de la base de datos.
- Importa la base de datos:
wp db import <file-name.sql>
Ejemplo de entrada:
wp db import network-db.sql
Resultado: El archivo
network-db.sql
rellena las tablas de datos vaciadas. - Borrar el archivo SQL importado:Por motivos de seguridad, borra el archivo SQL después de importarlo:
rm <file-name.sql>
Ejemplos prácticos
Se nos ocurren muchos comandos que agilizarán y simplificarán tu flujo de trabajo. Aquí tienes tres ejemplos. Aunque algunos de estos comandos son más complejos, se basan en otros más sencillos para realizar operaciones útiles.
Instalar y activar plugins y regenerar miniaturas simultáneamente.
Este comando recorre todos los sitios de la red, instala y activa dos plugins, y regenera las miniaturas de las imágenes de cada sitio.
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
Ejemplo de entrada:
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
Resultado: Los plugins Akismet
y BBPress
se instalan y activan en todos los sitios, y se regeneran las miniaturas de las imágenes.
Añadir un meta campo personalizado para todos los usuarios
Este comando recorre todos los sitios, recupera la lista de usuarios y añade un metacampo personalizado para cada usuario.
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} <meta-key> <meta-value> --url=%'
Ejemplo de entrada:
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color "" --url=%'
Resultado: Se añade un metacampo personalizado, favorite_color
, para todos los usuarios de todos los sitios.
Para hacer visible el campo favorite_color
, tendrás que utilizar tu archivo functions.php
o crear un plugin personalizado.
Convertir una instalación de un solo sitio en una multisitio
WP-CLI facilita la conversión de un sitio WordPress independiente en una red Multisitio.
wp core multisite-convert
Resultado: El sitio único se convierte en una red Multisitio.
Antes de la conversión, asegúrate de desactivar todos los plugins.
Después de convertir el sitio, tienes que configurar las URL de la red en el archivo wp-config.php
. Puedes elegir entre utilizar subdominios (por ejemplo, sitio.ejemplo.com) o subdirectorios (por ejemplo, ejemplo.com/site). Además, comprueba el archivo .htaccess
, ya que las reglas de reescritura de URL (gestionadas por el módulo mod_rewrite de Apache) pueden requerir actualizaciones manuales para garantizar que tus enlaces permanentes y la estructura del sitio funcionen correctamente.
Resumen
Esta guía destaca la potencia y flexibilidad de WP-CLI para gestionar entornos de WordPress Multisitio, convirtiéndola en una herramienta esencial para desarrolladores y administradores que buscan eficacia y control. Desde la gestión de plugins, usuarios y bases de datos hasta la realización de operaciones avanzadas como la conversión de sitios únicos a Multisitio, WP-CLI simplifica las tareas complejas con precisión y rapidez.
Kinsta ofrece una herramienta muy valiosa y extensible, WP-CLI, que permite una gestión perfecta de las redes de WordPress Multisitio. Tanto si trabajas en entornos en producción o staging como si utilizas nuestra herramienta de desarrollo local, DevKinsta, WP-CLI está disponible para agilizar tu flujo de trabajo.
¡Empieza a crear sitios, añadir plugins, usuarios y mucho más con WP CLI!
Deja una respuesta