Crear un código corto para listar publicaciones con múltiples parámetros

En muchos de los sitios de clientes que construyo, encuentro que hay ocasiones en las que necesito incluir un listado de publicaciones en una página. No estoy hablando de páginas de archivo aquí, sino de agregar una lista personalizada a una página estática existente.

Por ejemplo, es posible que desee enumerar algunas publicaciones en la página 'Acerca de', o el sitio puede requerir una página en profundidad para un tema, con una lista de publicaciones y tipos de publicaciones personalizados relacionados con ese tema..

Una forma de hacerlo es creando una plantilla de página personalizada para incluir el contenido de la página actual más los resultados de una segunda consulta personalizada, pero si desea más flexibilidad sobre la forma en que enumera las publicaciones, o simplemente desea hacerlo unas cuantas veces, Shortcode será una solución más simple.

En este tutorial, le mostraré cómo crear un shortcode simple para enumerar todas las publicaciones de un tipo de publicación personalizada, y luego lo ampliaré para crear un shortcode con varios parámetros que los usuarios pueden especificar para enumerar las publicaciones como lo deseen..


Lo que necesitas para completar este tutorial

Necesitarás los siguientes recursos:

  • Una instalación de desarrollo de WordPress.
  • Acceda a su carpeta de complementos para que pueda crear y cargar el complemento de shortcode

Encontrará todo el código para crear este complemento en la descarga del código.


Comenzando: Creando el Contenido

Antes de configurar el código abreviado, deberá registrar un tipo de publicación personalizada y dos taxonomías personalizadas, que utilizaremos para probar el código abreviado..

El código para hacer esto está contenido en el complemento que he escrito para el código corto, aunque en un proyecto en vivo, recomiendo separarlo del propio complemento de código corto..

Crea un nuevo archivo en tu carpeta de complementos y llámalo post-listing-shortcode.php.

Agregue el siguiente código al archivo.

Nota: Crear los tipos de correos personalizados y las taxonomías no es fundamental para el aprendizaje de este tutorial. Si lo desea, puede copiar este código del archivo de descarga y omitir esta etapa..

  'Ropa', 'singular_name' => 'Artículo de ropa', 'add_new' => 'Agregar nuevo', 'add_new_item' => 'Agregar artículo de ropa', 'edit_item' => 'Editar artículo de ropa', 'new_item' => 'Nuevo artículo de ropa', 'all_items' => 'Toda la ropa', 'view_item' => 'Ver artículo de la ropa', 'search_items' => 'Buscar ropa', 'not_found' => 'No se encontró ropa', 'not_found_in_trash' => 'No hay ropa en la basura', 'parent_item_colon' => ", 'menu_name' => 'Ropa',); register_post_type ('clothes', array ('labels' => $ labels, 'has_archive' => verdadero, 'público' => verdadero, 'jerárquico' => verdadero, 'soporta' => matriz ('título', 'editor', 'extracto', 'campos personalizados', 'miniatura', 'página- attributes '),' taxonomies '=> array (' post_tag ',' category '),' exclude_from_search '=> true,' capacity_type '=>' post ',)); // registra dos taxonomías para ir con la publicación escriba add_action ('init', 'rmcc_create_taxonomies', 0); function rmcc_create_taxonomies () // color taxonomy $ labels = array ('name' => _x ('Colors', 'taxonomy general name'), 'si ngular_name '=> _x (' Color ',' taxonomy singular name '),' search_items '=> __ (' Search Colors '),' all_items '=> __ (' All Colors '),' parent_item '=> __ ( 'Color principal'), 'parent_item_colon' => __ ('Color principal:'), 'edit_item' => __ ('Edit Color'), 'update_item' => __ ('Update Color'), 'add_new_item' = > __ ('Agregar nuevo color'), 'new_item_name' => __ ('Nuevo color'), 'menu_name' => __ ('Colores'),); register_taxonomy ('color', 'clothes', array ('hierarchical' => true, 'labels' => $ labels, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); // taxonomía de tela $ labels = array ('name' => _x ('Fabrics', 'nombre general de taxonomía'), 'singular_name' => _x ('Fabric', 'taxonomía nombre singular'), 'search_items' => __ ('Search Fabrics'), 'all_items' => __ ('All Fabric'), 'parent_item' => __ ('Parent Fabric'), 'parent_item_colon' => __ ('Parent Fabric:'), 'edit_item '=> __ (' Edit Fabric '),' update_item '=> __ (' Update Fabric '),' add_new_item '=> __ (' Add New Fabric '),' new_item_name '=> __ (' New Fabric ') , 'menu_name' => __ ('Fabrics'),); register_taxonomy ('fabric', 'clothes', array ('hierarchical' => true, 'labels' => $ labels, 'query_var' => true, 'rewrite' => true, 'show_admin_column' => true)); ?>

Esto le dice a WordPress sobre el complemento y registra el tipo de publicación personalizada 'ropa' y las dos taxonomías, 'color' y 'tejido'.

Guarde este complemento y actívelo a través de la página de complementos en WordPress.

Ahora que tiene su tipo de publicación personalizada y taxonomías en su lugar, cree algunas publicaciones con ellos. En la captura de pantalla de abajo puedes ver el contenido que he creado:


Creando un código corto de listado simple

Si solo desea enumerar el contenido de una manera utilizando su código abreviado, puede crear un código abreviado muy simple que no use parámetros.

Abra su archivo de complemento nuevamente y agregue lo siguiente:

 // crear shortcode para enumerar todas las prendas que vienen en azul add_shortcode ('list-posts-basic', 'rmcc_post_listing_shortcode1'); function rmcc_post_listing_shortcode1 ($ atts) ob_start (); $ query = new WP_Query (array ('post_type' => 'clothes', 'color' => 'blue', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'title ',)); if ($ consulta-> have_posts ()) ?> 
    have_posts ()): $ query-> the_post (); ?>
  • > ">

Esto crea un código corto simple, usando WP_Query para ejecutar una consulta personalizada en su contenido y generar los resultados en una lista. Cuando escribo [list-posts-basic] En una página, los resultados se muestran en esta captura de pantalla:


Agregando algunos parámetros para modificar la consulta

El código abreviado será mucho más útil si los usuarios pueden agregar sus propios parámetros, eligiendo por ejemplo:

  • ¿Cuántas publicaciones a la lista?
  • ¿Qué tipo de post para consultar?
  • Categorías para incluir
  • Telas y colores para incluir.
  • Parámetros de pedido

Para agregar esto al código corto, usted hace uso del shortcode_atts () función, que le permite especificar algunos atributos predeterminados que los usuarios pueden anular.

Una vez más en su archivo de complemento y debajo del código para el primer código abreviado, agregue lo siguiente:

 // crear un shortcode con parámetros para que el usuario pueda definir lo que se consulta - por defecto es enumerar todas las publicaciones del blog add_shortcode ('list-posts', 'rmcc_post_listing_parameters_shortcode'); function rmcc_post_listing_parameters_shortcode ($ atts) ob_start (); // defina los atributos y extraiga sus valores predeterminados (shortcode_atts (array ('type' => 'post', 'order' => 'date', 'orderby' => 'title', 'posts' => -1, 'color '=> ",' fabric '=>",' category '=> ",), $ atts)); // define los parámetros de consulta basados ​​en los atributos $ options = array (' post_type '=> $ type,' order ' => $ order, 'orderby' => $ orderby, 'posts_per_page' => $ posts, 'color' => $ color, 'fabric' => $ fabric, 'category_name' => $ category,); $ query = new WP_Query ($ options); // ejecuta el bucle en función de la consulta si ($ query-> have_posts ()) ?> 
    • >

Nota: Utilizando ob_start () y ob_get_clean () asegura que el bucle se muestre en el lugar de su página o publicación que haya agregado el shortcode. Si no los agrega, la lista se mostrará en la parte superior del contenido..

De forma predeterminada, enumera todas las publicaciones en orden descendente de fecha, por lo que si escribe [lista de mensajes] en una página o publicación, el resultado es como en esta captura de pantalla:

Sin embargo, si añades algunos parámetros las cosas se ponen más interesantes. Por ejemplo, para enumerar todas las prendas que vienen en color negro, escribo [list-posts type = "clothes" color = "black" orderby = "name" order = "ASC"]:

O para enumerar toda la ropa en la categoría 'inteligente' que escribo [list-posts type = "clothes" category = "smart" orderby = "name" order = "ASC"]:

Si lo necesita, puede especificar más atributos con los que los usuarios pueden trabajar, pero debe incluir todos los disponibles en su complemento, en el extraer (shortcode_atts) función.

No tiene que especificar un valor predeterminado para todos ellos, por ejemplo, he dejado los parámetros de categoría y taxonomía en blanco en el ejemplo. Los parámetros que puede definir son cualquiera de los que se pueden especificar para WP_Query - Para una lista completa, vea su página del Codex.


Resumen

Ser capaz de insertar una lista de publicaciones en una página o publicación puede ser muy útil. Le ahorra tener que modificar sus archivos de plantilla o escribir una plantilla de página personalizada.

El código abreviado que aprendió a crear en este complemento se podría usar de muchas maneras, y por supuesto, podría cambiar fácilmente el resultado del código abreviado; mi ejemplo genera una lista con viñetas con títulos de publicaciones incluidos en un enlace a su página, pero podría reemplazar el código dentro del bucle con las etiquetas de la plantilla para mostrar el contenido, las imágenes destacadas o cualquier otra cosa.


Recursos

Algunos recursos útiles sobre los temas tratados anteriormente:

  • La API de código corto
  • Atributos de shortcode
  • Parámetros de WP_Query