WP-CLI

WP-CLI Parte 3, trabajando con posts

En esta tercera entrada de la serie WP-CLI vamos a ver cómo trabajar con posts.

Para trabajar con posts utilizaremos el comando wp post. Éste comando dispone de los siguiente subcomandos:

  • wp post create, para crear un nuevo post
  • wp post delete, para borrar un post
  • wp post edit, abre un editor para modificar el post_content
  • wp post generate, para generar un lote de posts
  • wp post get, para obtener detalles de un post
  • wp post list, para obtener un listado de posts
  • wp post meta, para administrar post meta
  • wp post term, para administrar terms
  • wp post update, para actualizar posts

Vamos a ver a continuación algunos ejemplos:

Creando un post con WP-CLI

Para crear un post individual utilizaremos el comando wp post create. Este comando acepta los parámetros:

  • [<file>], almacena en post_content el contenido de <file>.
  • [--<field>=<value>], par clave/valor.
  • [--edit], abre el editor de archivos del sistema para escribir el post_content
  • [--porcelain], devuelve el post_id

En [--<field>=<value>] podemos establecer valores para algunos campos como:

  • ID
  • post_author
  • post_date
  • post_content
  • post_title
  • post_excerpt
  • post_status
  • post_type
  • post_password
  • post_name
  • post_parent
  • menu_order
  • post_category

Ejemplo:

wp post create --post_title="Pagina desde linea de comandos" --post_content="lorem ipsum dolor sit amet" --post_type="page" --menu_order=7

Genera un lote de posts desde la línea de comandos

A veces es interesante generar un lote de posts, para ver cómo funciona nuestra página: ver cómo queda un listado, probar la paginación, etc…

Si estamos desarrollando un proyecto nuevo tenemos la opción de crear un lote de 50 posts a mano, con todo el tiempo que esto conlleva, o hacer uso del comando wp post generate. Este comando admite los siguientes parámetros:

  • [--count=<number>], el número de posts que queremos generar. Por defecto 100.
  • [--post_type=<type>], el tipo de post que queremos generar. Por defecto post.
  • [--post_status=<status>], el estado de los posts que queremos generar. Por defecto publish.
  • [--post_author=<login>], para asignar un autor a los posts que queremos generar.
  • [--post_date=<yyyy-mm-dd>], para establecer una fecha a los posts que queremos generar.
  • [--post_content], para asignar contenido a los posts.
  • [--max_depth=<number>], para posts que sean de tipo hierarchical
  • [--format=<format>], para que nos devuelva en la salida una barra de progreso o los ids de los posts que se están generando. Por defecto progress.

Por ejemplo, si queremos generar un lote de 50 posts, bastará con esta instrucción:

curl http://loripsum.net/api/5 | wp post generate --post_content --count=50

Se generarán los posts: Entrada 1, Entrada 2 …. Entrada 50 en apenas unos segundos, y dispondremos de contenido dummy para hacer testeos en nuestro entorno.

Obtén un listado de posts con WP-CLI

Si queremos obtener un listado de posts en pantalla, disponemos del comando wp post list. Acepta los siguientes parámetros:

  • [--<field>=<value>], uno o más args que se pasarán a la WP_Query que devolverá el listado.
  • [--field=<field>], para imprimir únicamente un campo concreto en la salida.
  • [--fields=<fields>], para limitar la salida a campos específicos.
  • [--format=<format>], para mostrar la salida en un formato determinado. Por defecto tabla. Acepta: table, csv, ids, json, count, yaml

Por ejemplo, si queremos mostrar simplemente un listado de post, nos bastará con el comando: wp post list, y se nos mostrará en pantalla algo como esto:

wp post list

Si queremos especificar una serie de campos concretos, bastará con indicarlos separados por coma:

wp post list --fields=ID,post_title,post_author
wp post list fields

Elimina un post con WP-CLI

Con WP-CLI podemos también eliminar uno o varios posts desde la consola. El comando es wp post delete, y acepta los siguientes parámetros:

  • <id>, uno o más IDs (separados por coma) para eliminar (quedarán en papelera)
  • [--force], para forzar la eliminación completa de los posts, no quedarán en papelera
  • [--defer-term-counting], para obviar la llamada a wp_defer_term_counting() y evitar varias queries y mejorar el rendimiento del proceso

Por ejemplo, si queremos eliminar los posts con ID 55, 56 y 57, ejecutaremos el siguiente comando:

wp post delete 55,56,57

Esto los pondrá en papelera (post_status=trash). Si quisiéramos eliminarlos completamente tendríamos que añadir el parámetro –force.

También podemos eliminar posts sacando sus IDs de un listado, combinando dos comandos:

wp post delete (wp post list --post_status=trash --format=ids)

De este modo eliminaremos todos los posts que están en la papelera.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios