Webs y aplicaciones
WP-CLI, la navaja suiza de Wordpress para la terminal
WP-CLI es una interfaz de línea de comandos que nos permite desde mejorar nuestro workflow durante el desarrollo, a agilizar la resolución de errores, actualizaciones, activación de themes y plugins y esto solo para empezar.
Instalando WP-CLI
En nuestros servicios la instalación es tan sencilla como acceder a la terminal y ejecutar:
composer global require wp-cli/wp-cli
De esta forma instalamos el paquete wp-cli para que esté disponible en toda nuestra cuenta.
Esperamos a que finalice y tendremos disponible un nuevo comando llamado wp.

Si al ejecutar
wprecibes un mensaje de error, recuerda añadir la ruta de composer al fichero .bashrc.
Antes de ejecutar comandos que modifican datos
Los comandos de actualización, reemplazo, importación o reinstalación deben probarse primero en staging. Exporta la base, verifica el fichero y conserva una copia fuera del hosting:
umask 077 wp db export wp-antes-del-cambio.sql sha256sum wp-antes-del-cambio.sql > wp-antes-del-cambio.sql.sha256 chmod 400 wp-antes-del-cambio.sql wp-antes-del-cambio.sql.sha256 sha256sum -c wp-antes-del-cambio.sql.sha256
Cuando el comando admita --dry-run, úsalo obligatoriamente y revisa el recuento y una muestra. Antes de producción, detén las escrituras; después valida la web y conserva la exportación hasta terminar el periodo de recuperación.
Instalando Wordpress
Aunque ya ofrecemos una forma sencilla de instalar Wordpress, algunos usuarios prefieren la instalación manual, wp-cli permite realizar la misma desde la terminal.
Nos posicionamos en el directorio donde queremos instalarlo, preferiblemente un directorio vacío y como primer paso descargamos el core de Wordpress.
wp core download
A continuación configuramos los valores de conexión a una base de datos nueva y vacía. No incluyas la contraseña en los argumentos, porque puede quedar en el historial y en la lista de procesos; solicita el valor mediante el prompt de WP-CLI:
wp config create --dbname=base_datos \ --dbuser=usuario \ --dbhost=localhost \ --dbprefix=wp_ \ --prompt=dbpass
Sustituye el nombre y el usuario por los de la configuración MySQL que has creado previamente. También puedes usar un fichero de configuración protegido con permisos 600, fuera del directorio público, y eliminarlo cuando termine la instalación.
Finalmente ejecutamos la instalación. Genera una contraseña de administrador larga, aleatoria y única, y facilítala mediante el prompt, nunca como argumento:
wp core install --url=https://dominio.com \ --title=Sitio \ --admin_user=usuario \ --admin_email=mi@email.com \ --prompt=admin_password
Reinstalando Wordpress
Puede que hayas sufrido un hacking o que simplemente algo no funcione y necesites asegurarte que Wordpress está como debe, para ello puedes reinstalarlo con un simple comando.
wp core download --skip-content --force
Este comando reemplaza ficheros del núcleo. Haz antes una copia actual, revisa los ficheros personalizados de la raíz y ejecuta
wp core verify-checksumsantes y después. Si falla la validación, restaura los ficheros desde la copia verificada.
Cambiar la url principal de Wordpress
Si por cambios de dominio o por pasar de desarrollo a producción, necesitas cambiar la url principal de Wordpress podrás ejecutar:
wp option update home 'https://nuevodominio.com' wp option update siteurl 'https://nuevodominio.com'
Donde nuevodominio.com sería la nueva url que Wordpress usará como principal.
Listado de plugins
Ejecutando wp plugin list puedes obtener un listado de plugins, su estado y la versión en uso.
Instalación de plugins
Instalar uno u varios plugins es tan fácil como ejecutar:
wp plugin install plugin1 plugin2 --activate
Añadiendo al final --activate hacemos que además de instalarlos, los active.
Si no conocemos el nombre que debemos indicar respecto a algún plugin, podemos usar el buscador para localizarlo, el comando sería wp plugin search busqueda.
También podemos indicar la url del zip que contiene el plugin:
wp plugin install https://url/fichero.zip --activate
Desactivar uno o varios plugins
Puedes desactivar plugins específicos con wp plugin deactivate plugin, donde plugin sería el nombre que puedes obtener del listado de plugins instalados wp plugin list.
En caso de necesitar desactivar todos ejecuta wp plugin deactivate --all.
Actualizar plugins
Para actualizar un plugin, ejecuta wp plugin update nombre-plugin.
Búsqueda y reemplazo masivo de coincidencias en la base de datos
Esta función es una de las más potentes de wp-cli, la opción de buscar y reemplazar coincidencias en la base de datos.
Por ejemplo, has cambiado la dirección de tu web y muchas direcciones en el contenido de los posts siguen apuntando a la anterior.
En ese caso, exporta primero la base y ejecuta obligatoriamente una simulación limitada a las tablas necesarias:
wp search-replace 'antiguo.example' 'nuevo.example' wp_posts wp_postmeta \ --precise --report-changed-only --dry-run
WP-CLI respeta los datos serializados. Revisa el informe y una muestra en staging; solo después repite exactamente el comando sin --dry-run. Si el alcance no es el esperado, restringe tablas y columnas en lugar de hacer un reemplazo global.
Pero podemos ir más allá, esta opción permite usar expresiones regulares, lo que significa que podremos modificaciones masivas mucho más flexibles.
Por ejemplo, imaginemos que tenemos un iframe en todas las páginas y posts que nos gustaría eliminar, pero por desgracia tiene variaciones en el tamaño, orden de los atributos e incluso dominio.
<iframe src='https://dominio/header.htm' frameborder='0' scrolling='no' width='620' height='70'></iframe> <iframe src='http://dominio/header.htm' frameborder='0' scrolling='no' width='10' height='20'></iframe> <iframe src='https://www.dominio/header.htm' scrolling='yes' ></iframe>
Vemos que el único patrón que podemos seguir es que se trata siempre del fichero header.htm y por otro lado que es un iframe, nada más.
Con esto en mente podemos crear una expresión regular que al buscar coincida con todas las opciones:
<iframe\b[^>]{0,2000}?header\.htm[^>]{0,2000}?>[\s\S]{0,10000}?<\/iframe>
La expresión usa cuantificadores no codiciosos y límites máximos para no atravesar contenido arbitrario ni capturar varios bloques por accidente. Ajusta esos límites a tu contenido y ensáyala con una muestra conocida.
Ya con nuestra expresión regular podemos ejecutar la búsqueda y reemplazo.
wp search-replace '<iframe\b[^>]{0,2000}?header\.htm[^>]{0,2000}?>[\s\S]{0,10000}?<\/iframe>' '' \ --regex --precise --regex-flags='i' wp_posts \ --include-columns=post_content \ --report-changed-only \ --dry-run
La búsqueda queda limitada a wp_posts.post_content y --dry-run informa de las coincidencias sin reemplazarlas. Revisa el resultado en staging y vuelve a exportar la base antes de ejecutar el comando real en producción.
Las expresiones regulares son una herramienta muy potente pero difícil de entender al principio, el siguiente tutorial interactivo te ayudaría a entender mejor su sintaxis y capacidades.
Importar y exportar la base de datos
La importación y exportación de una base de datos se puede realizar desde phpMyAdmin o con el comando mysql, no obstante por conveniencia puede ser util hacerlo directamente con el comando wp.
wp db export genera un fichero .sql con el contenido de la base de datos. Verifica su checksum y prueba la recuperación antes de depender de él.
wp db import fichero.sql escribe sobre la base configurada y puede mezclar datos o sobrescribir tablas. Para una restauración segura, crea una base nueva y vacía, configura un clon para apuntar a ella e importa allí. Compara esquema, recuentos y funcionamiento; solo después detén las escrituras y cambia las credenciales de la aplicación. Mantén la base original intacta para volver a sus credenciales si la validación posterior falla.
Listado de eventos wp-cron
wp cron event list muestra un listado de eventos recurrentes ejecutados por Wordpress así como su intervalo de ejecución, fecha de la próxima ejecución y de la anterior, realmente útil en caso de depurar problemas de rendimiento que puedan estar relacionados con estas tareas.
También te puede ayudar