Hoy en Ayuda WordPress | ![]() |
WP-CLI La interfaz de comandos de WordPress – Guía de uso Posted: 24 Sep 2015 02:52 PM PDT Aunque la interfaz de comandos nunca ha sido muy popular entre los usuarios finales, para los desarrolladores es casi siempre la mejor opción ya que ofrece herramientas que mejoran la velocidad y la productividad en todos los procesos. Puede que te suene raro que una interfaz en línea de comandos pueda ser útil, no digamos menor, y quizás dudes que puedas realizar tareas de todo tipo de manera más fácil que con una interfaz gráfica, pero así es, y es lo que vamos a aprender en este artículo, al menos en lo referente a WP-CLI, la interfaz de comandos para realizar tareas en WordPress. Y es que la interfaz gráfica de WordPress ha avanzado mucho, pero cuando queremos realizar tareas administrativas o de desarrollo, no hay nada más eficaz y rápido que la interfaz de línea de comandos. ¿Qué es WP-CLI?WP-CLI es una serie de herramientas en línea de comandos que ofrecen diversas funcionalidades para gestionar sitios WordPress. ¿Cómo se instala WP-CLI?
La instalación de WP-CLI es sencilla. En principio tienes que descargar un archivo PHP y ponerlo en algún lugar de tu servidor para poder ejecutarlo desde donde te encuentres. Puedes descargar WP-CLI desde su repositorio en GitHub, tecleando lo siguiente: curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar Lo siguiente es hacer que el fichero sea ejecutable: chmod +x wp-cli.phar Y para finalizar hay que mover el archivo a una carpeta, para que puedas ejecutarlo desde donde quieras. Es mejor si renombres el archivo a algo que te sea fácil de recordar y teclear. La mayoría de la gente lo renombre simplemente a sudo mv wp-cli.phar /usr/local/bin/wp Con eso ya lo tienes instalado, y ya podrías teclear comandos WP-CLI. Puedes comprobar, si lo prefieres, si el proceso de instalación se ha completado con éxito tecleando el siguiente comando (ya con el ejecutable renombrado, acuérdate): wp --info Si todo ha ido bien deberías ver algo parecido a lo siguiente: PHP binary: /usr/bin/php PHP version: 5.5.24 php.ini used: /etc/php.ini WP-CLI root dir: phar://wp-cli.phar WP-CLI global config: /Users/kouratoras/.wp-cli/config.yml WP-CLI project config: WP-CLI version: 0.19.2 ¿Qué puedo hacer con WP-CLI?Son muchas las tareas administrativas que puedes realizar con WP-CLI, vamos a ver las más comunes, y alguna quizás no tan común. Instalar WordPressUn comando básico de WP-CLI es wp core download Con este comando descargamos la última versión de WordPress en inglés (en_US). Si queremos descargar otra versión o idioma usaremos los parámetros wp core download --version=4.2.2 --locale=es_ES Una vez se complete la descarga podemos crear el archivo wp core config --dbname=nombrebasededatos --dbuser=nombreusuariobasededatos --dbpass=clavebasededatos --dbhost=localhost --dbprefix=prefijo_ Como ves, el comando utiliza los argumentos que le demos (que deberás adecuar como siempre a los datos de tu servidor) y creará un archivo wp core install --url=example.com --title="Título del sitio WordPress" --admin_user=nombreusuarioadmin --admin_password=claveusuarioadmin --admin_email="admin@misitio.es" Actualizar WordPressSi tienes que actualizar una instalación de WordPress entonces usaremos los comandos Como no hace falta que te recuerde, las actualizaciones de WordPress son importantísimas, no digamos las de seguridad y mantenimiento. Así que podemos hacerlas rápidamente con el comando wp core update wp core update-db Otra cosa que puedes hacer es comprobar la versión actual de WordPress en tu instalación usando el comando Quizás en principio pueda que no te parezca que usar la línea de comandos es más eficaz que hacerlo desde el escritorio de administración, pero si tienes que actualizar muchas instalaciones de WordPress te vas a ahorrar un montón de tiempo y clics. Puedes, por ejemplo, crear un script y actualizarlas todas de golpe: #!/bin/bash declare -a sites=('/var/www/wp1' '/var/www/wp2' '/var/www/wp3') for site in "${sites[@]}"; do wp --path=$site core update done Y, en todos los casos, ya sabes que siempre hay que hacer una copia de seguridad de la base de datos antes de actualizar nada ¿no?, pues se hace así: wp db export backup.sql Administrar pluginsTambién, administrar plugins, es cosa de un sencillo comando. Por ejemplo, 5 installed plugins: UA smooth-scroll-up 0.8.9 I wordpress-beta-tester 1.0 A wordpress-importer 0.6.1 A wpcli-commands 1.0 Otros comandos relacionados con los plugins son wp plugin install wordpress-importer --activate wp plugin deactivate wordpress-importer wp plugin delete wordpress-importer wp plugin update --all wp plugin search import Administrar temasPor regla general, los mismos comandos que usas para administrar los plugins puedes usarlos para los temas, simplemente reemplazando Si quizás sea interesante resaltar el comando wp scaffold child-theme my-child-theme --parent_theme=twentyfifteen --theme_name='Mi tema hijo' --author='Fernando Tellado' --author_uri=http://ayudawp.com --theme_uri=http://ayudawp.com --activate Manipular datosAdemás de comandos sencillos como wp generate posts --count=1000 También podrías exportar tu contenido actual y migrarlo a otra instalación de WordPress, algo muy útil. Para hacerlo tienes primero que instalar el plugin Importador de WordPress, como siempre, así:: wp plugin install wordpress-importer --activate Y luego ya puedes usar los comandos wp export wp import test.xml --authors=create Administrar revisiones de entradasYa sabes, y sino lo recordamos, que WordPress almacena todas las revisiones de entradas en la base de datos. Esto implica que vas a almacenar un montón de información en la tabla de entradas de tu base de datos, y como el espacio de servidores no es infinito, y es caro, no es mala idea poner algo de orden en este asunto. Para poner control, puedes usar el plugin wp-revisions-cli, que no es ni más ni menos que una extensión para WP-CLI que añade la funcionalidad de administrar revisiones de entradas. Lo puedes instalar como un plugin WordPress normal, y te ofrece una serie de comandos como Administrar mediosHay un montón de tareas administrativas que puedes simplificar relacionadas con las imágenes o medios en general. Para ello WP-CLI nos ofrece herramientas muy interesantes. Importación masiva de imágenesNo es nada raro que un cliente tenga un montón de imágenes y te pida que las importes a si web. Hacer esto desde el escritorio de WordPress sería un horror, pero podemos llamar a WP-CLI para que venga a nuestro rescate con un simple comando: wp media import carpeta_de_imagenes/* Regenerar miniaturasUna de las tareas que todo administrador de WordPress tiene que hacer alguna vez es regenerar las miniaturas de las imágenes que usaste en el proceso de desarrollo y creación de la web. Es verdad que podrías usar un plugin o incluso algún código PHP al uso para hacerlo, pero es más rápido y fácil hacerlo con un comando de WP-CLI: wp media regenerate Las posibilidades son infinitas, ya que puedes combinar varios comandos para especificar qué imágenes quieres editar. Por ejemplo, para regenerar las imágenes destacadas de las entradas de una categoría concreta usaríamos un comando así: wp media regenerate $(wp eval 'foreach( get_posts(array("category" => 2,"fields" => "ids")) as $id ) { echo get_post_thumbnail_id($id). " "; }') Operaciones con la base de datosTe sonará ya que cuando queremos realizar acciones avanzadas de administración de WordPress normalmente tenemos que usar la línea de comandos, y también para esto WP-CLI nos ofrece comandos para hacer queries: wp db query "SELECT id FROM wp_users;" Y, por supuesto, también podemos realizar operaciones típicas en la base de de datos como importar, exportar u optimizar: wp db export wp db import backup.sql wp db optimize El comando export puedes usarlo también dentro de un script o una tarea cron para administrar copias de seguridad programadas de la base de datos. Buscar y reemplazar en la base de datosEs una práctica habitual crear una web en un servidor local o de desarrollo una práctica y luego moverlo a otro servidor al terminar. La parte de copiar los archivos y migrar la base de datos son pasos relativamente sencillos. Ahora bien, la parte tediosa es que suelen quedar “restos” en este proceso, como el tener que reemplazar las URLs antiguas (de la instalación local o de desarrollo) almacenadas en los registros de la base de datos. Solemos solucionar este problema mediante plugins o consultas SQL, pero en ocasiones hay URLs en los datos internos en serie de la base de datos en los que una búsqueda y reemplazo normal no funcionarán. WP-CLI, de nuevo, puede ayudarnos en esta tarea. Tenemos el comando wp search-replace 'dev.tusitio.com' 'www.sitio-cliente.com' En este caso, WP-CLI desempaqueta datos JSON, ejecuta la acción de reemplazo y empaqueta de nuevo los datos en la base de datos. Si quieres ver cuántas operaciones de esta acción de búsqueda hay en tu base de datos antes de ejecutar el comando export puedes ejecutar antes el comando wp search-replace --dry-run 'dev.example.com' 'www.example.com' Lo que verás es algo así: Operaciones en WordPress MultisitioUna gran ventaja de utilizar WP-CLI en particular, y la línea de comandos en general, es la posibilidad de automatizar tareas repetitivas usando scripts. Esto también se aplica a las redes de WordPress Multisitio. De este modo, en vez de visitar el escritorio de cada web para realizar un tarea, puedes simplificar el proceso utilizando algunas líneas de código. Por ejemplo, puedes usar un script como el siguiente para instalar el plugin Importador de WordPress en un sitio concreto: #!/bin/bash for site in $(wp site list --field=url) do wp plugin install wordpress-importer --url=$site --activate done Si quieres incluso saltarte pasos adicionales a la hora de crear y ejecutar un script, puedes ejecutar el mismo ejemplo de antes con un sencillo comando: for site in $(wp site list --field=url); do wp plugin install wordpress-importer --url=$site --activate; done Uso remoto de WP-CLI con SSHSi ya has instalado WP-CLI en tu servidor remoto, y si tu proveedor de alojamiento lo permite, puedes conectarte vía un terminal SSH y utilizar también comandos WP-CLI. Lo único que necesitas es un cliente SSH y las credenciales del alojamiento para conectarte a tu servidor. Si utilizas Linux o Mac OS X no tienes que instalar ningún software, ya que puedes hacerlo desde la aplicación Terminal, y si utilizas Windows puedes usar aplicaciones como Putty. Con cualquiera de estas herramientas puedes conectarte a tu servidor mediante SSH con este comando: ssh username@host A continuación la interfaz de comandos te pedirá la contraseña y, si te conectas correctamente, tendrás una interfaz de comandos para usar las herramientas de WP-CLI en ese alojamiento. Si no estuviese disponible WP-CLI puedes seguir los pasos descritos en el sitio oficial para instalarlo. Cuando termines, de nuevo, puedes comprobar que está instalado correctamente con el comando que hemos visto al principio: wp cli version Si todo ha ido bien te mostrará la versión actual. Ejecutar comandos de manera sencillaConectarse a un servidor y navegar hasta la ruta correcta para ejecutar comandos WP-CLI puede ser algo tedioso. En su lugar puedes usar WP-CLI SSH, un paquete adicional que te permite ejecutar comandos WP-CLI desde tu terminal local, si tener que conectarte al servidor remoto. Antes de instalar WP-CLI SSH tienes que especificar la ubicación del paquete índice de WP-CLI en la carpeta cd ~/.wp-cli También tienes que instalar el Composer si no lo has hecho anteriormente: curl -sS 'https://getcomposer.org/installer' | php A continuación crea (o usa si ya existe) el archivo php composer.phar init --stability dev --no-interaction php composer.phar config bin-dir bin php composer.phar config vendor-dir vendor Añade el paquete índice de WP-CLI: php composer.phar config repositories.wp-cli composer 'http://wp-cli.org/package-index/' Luego crea (o usa si ya existe) el archivo require: - vendor/autoload.php Con esto ya estaría todo listo para instalar el paquete WP-CLI SSH: php composer.phar require x-team/wp-cli-ssh:dev-master Lo siguiente es crear el archivo de configuración y configurar los servidores. Crea un archivo ssh: production: # El localizador %pseudotty% se reemplaza con -t o -T dependiendo de si estás canalizando la salida o no # El localizador %cmd% se reemplaza con el comando originalmente lanzado por WP-CLI cmd: ssh %pseudotty% production.example.com %cmd% # Pasamos WP-CLI al servidor remoto mediante el comando --url url: produccion.ejemplo.com # Cambiamos (cd) a esta ruta del servidor remoto antes de ejecutar WP-CLI path: /var/www/produccion # WP-CLI en SSH parará si tecleas alguno de estos comandos: - db drop - db reset En este ejemplo anterior, por supuesto, reemplaza Si todo se ha configurado correctamente ya podrás ejecutar comandos utilizando el subcomando wp ssh plugin status --host=produccion Si estuvieses trabajando principalmente en el servidor remoto también tienes la opción de crear un alias en tu archivo alias wp="wp ssh --host=produccion" Unidades de pruebaLas unidades de prueba pueden ser muy beneficiosas para los desarrolladores de plugins. Pueden revelar fallos rápidamente y asegurarte de que una versión nueva de tu software no rompa todo. Sin embargo, crear pruebas es un proceso complicado ya que tienes que configurar PHPUnit, configurar la biblioteca de pruebas de WordPress y los archivos de configuración. Estas últimas dos tareas puedes hacerlas muy fácilmente con WP-CLI y así crear automáticamente los archivos requeridos. Lo primero de todo es instalar PHPUnit; siguiendo las instrucciones de su web oficial. A continuación WP-CLI entra en acción y te ayudará a crear los archivos necesarios para ejecutar las unidades de prueba PHP con un solo comando: wp scaffold plugin-tests mi-plugin Si navegas hasta tu carpeta de plugins verás algunos archivos y carpetas nuevos: .travis.yml bin/ phpunit.xml tests/ Puedes utilizar el archivo bash bin/install-wp-tests.sh test_database user 'pass' localhost latest Los parámetros utilizados son estos:
El comando anterior creará una unidad de prueba de ejemplo que no hace nada, pero que puedes usarla como archivo de partida para crear tu propia prueba. El archivo es class SampleTest extends WP_UnitTestCase { function test_sample() { // replace this with some actual testing code $this->assertTrue( true ); } } Con esto ya está todo preparado, y puedes ejecutar tu unidad de prueba para el plugin así: phpunit Hay mucho más relacionado con las unidades de prueba pero se escapa al objetivo de este artículo. Si quieres más información la tienes en la web oficial de PHPUnit. Usos avanzados de WP-CliSi has llegado hasta aquí es posible que ya te hayas convencido de que WP-CLI es una potente herramienta para el desarrollador. Pero hay mucho más, pues puedes extender la funcionalidad base de WP-CLI usando tus códigos. Hay dos maneras de hacerlo. Puedes cargar y ejecutar código PHP desde un archivo o crear tu propio plugin que genere comandos personalizados. Ejecutar un archivo PHPSi quieres probar un código PHP no necesitas incluirlo en un archivo de WordPress. WP-CLI dispone del comando global $wpdb; $random_post = $wpdb->get_var( "SELECT post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1" ); echo "Random post: $random_post"; Lo guardas en un archivo llamado wp eval-file ./script.php Crear comandos personalizados usando un pluginYendo un paso más allá puedes crear plugins WordPress personalizados que amplíen las funcionalidades por defecto de WP-CLI y así crear tus propios comandos. El archivo de tu plugin debería tener una clase para cada comando y métodos públicos para cada subcomando. Para ver un ejemplo en acción asumamos que quieres crear un comando que contenta estos tres subcomandos:
Crearemos una clase, denominada En este ejemplo, el primer subcomando tendría un argumento posicional function hola( $args, $assoc_args ) { list( $name ) = $args; WP_CLI::success( "Hola, $name!" ); } El segundo subcomando tendría un argumento asociativo function adios( $args, $assoc_args ) { $name = 'name'; if( $assoc_args[ 'name' ] ) { $name = $assoc_args[ 'name' ]; } WP_CLI::success( "Adiós, $name!" ); } El tercer subcomando no tendría argumentos. Simplemente ejecutaría una petición a la base de datos, recuperando una entrada aleatoria e imprimiría el título: function random ( $args, $assoc_args ) { global $wpdb; $random_post = $wpdb->get_var( "SELECT post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY rand() LIMIT 1" ); WP_CLI::success( "Entrada aleatoria: $random_post" ); } Para finalizar, tendremos que registrar tu clase como un comando WP-CLI, utilizando una llamada WP_CLI::add_command( 'miscomandos', 'Mis_Comandos' ); Una vez incluido todo el código en un plugin WordPress ya podrías confirmar que tu comando se ha registrado con éxito tecleando lo siguiente: wp miscomandos La salida será una lista de los comandos disponibles: usage: wp miscomandos adios --name=name or: wp miscomandos hola name or: wp miscomandos random Todo estaría ya listo para ejecutar tu primeros comandos personalizados de WP-CLI: wp miscomandos hola mundo wp miscomandos adios --name="Jose" wp miscomandos random Lo que, respectivamente, mostraría lo siguiente: Success: Hola, mundo! Success: Adiós, Jose! Success: Random post: Este es el título de una entrada ConclusiónEspero que con este repaso tengas una idea general de las posibilidades de WP-CLI, las cuales son infinitas, no digamos si te animas a ampliar funcionalidades del código y creas tus propios comandos. Por supuesto, hay muchas más herramientas incluidas, no mencionadas en este artículo, que puedes encontrar en la web oficial de WP-CLI. Y si quieres ampliar conocimientos aquí tienes unos enlaces imprescindibles:
Y también tienes esta chuleta base de comandos de WP-CLI: Este artículo ha sido posible gracias a Smashing Magazine |
You are subscribed to email updates from Ayuda WordPress. To stop receiving these emails, you may unsubscribe now. | Email delivery powered by Google |
Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States |
No hay comentarios:
Publicar un comentario