- 1. Instalación y primeros pasos
- 2. Instalando WordPress y primeros pasos y configuraciones
- 3. Trabajando con posts
- 4. Trabajando con usuarios
- 5. Trabajando con la base de datos
- 6. Search & Replace, un comando imprescindible
- 7. Importar y Exportar contenido
- 8. Scaffold, genera esqueletos de código
- 9. Paquetes de comandos adicionales
- 10. Crea tus propios comandos
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:

Si queremos especificar una serie de campos concretos, bastará con indicarlos separados por coma:
wp post list --fields=ID,post_title,post_author 
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.