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 sitio mysite.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.

  1. 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.

  2. Filtra los plugins por estado (por ejemplo, activo):
    wp plugin list --network --status=active

    Salida: Una tabla de los plugins activos en la red.

  3. Obtén una lista de plugins del sitio primario:
    wp plugin list

    Salida: Una lista de plugins del sitio primario.

  4. 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.

  1. Desactivar todos los plugins de la red:
    wp plugin deactivate --network --all

    Resultado: Se desactivan todos los plugins de la red.

  2. 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 y hello-dolly están desactivados para el sitio blog.example.com.

Activar plugins

Utiliza estos comandos para activar plugins en toda la red o para sitios individuales en tu configuración Multisitio.

  1. Activar todos los plugins de la red:
    wp plugin activate --network --all

    Resultado: Se activan todos los plugins de la red.

  2. 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 y hello-dolly están activados para el sitio blog.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.

  1. Actualiza todos los plugins de la red:
    wp plugin update --network --all

    Resultado: Se actualizan todos los plugins de la red.

  2. 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, y bbpress se actualizan en la red.

  3. 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 sitio blog.example.com.

Eliminar plugins

Eliminar plugins es sencillo con WP-CLI, tanto si trabajas en un solo sitio como en una red Multisitio.

  1. 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.

  2. 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 sitio blog.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 o example.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

  1. Vacía el sitio principal:
    wp site empty

    Salida: Aparece una solicitud de confirmación para borrar todo el contenido del sitio principal.

  2. 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.

  3. 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.

  4. 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.

  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 y 3. 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.

  1. Borra todo el caché (del sitio, edge, CDN y Redis):
    wp kinsta cache purge --all
  2. Borra sólo el caché del sitio:
    wp kinsta cache purge --site
  3. Purgar caché CDN:
    wp kinsta cache purge --cdn
  4. 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.

  1. 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.

  2. Lista de usuarios del sitio principal:
    wp user list

    Resultado: Muestra una tabla de usuarios para el sitio principal.

  3. 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.

  1. 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.

  2. 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 sitio blog.example.com como «Editor».

  3. 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 mostrar John Doe y un apodo Johnny.

Actualizar usuario

Actualizar la información del usuario, como los roles o las contraseñas, es rápido con WP-CLI.

  1. 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, y adminuser son ascendidos a Superadministradores.

  2. 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.

  3. 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 a newPassword2024, 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.

  1. 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 usuario johndoe.

  2. 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 usuario johndoe.

  3. 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 usuario johndoe.

Eliminar usuarios

Eliminar usuarios de la red o de sitios específicos es eficiente con WP-CLI.

  1. 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.

  2. 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 sitio mysite.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.

  1. Restablecer tablas de datos:
    wp db reset

    Resultado: Se vacían todas las tablas de datos de la base de datos.

  2. 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.

  3. 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!

Bud Kraus

Bud Kraus has been working with WordPress as an in-class and online instructor, site developer, and content creator since 2009. He has produced instructional videos and written many articles for WordPress businesses.