Visualización de tipos de publicaciones personalizadas: plantillas y consultas

Publicado: 2016-09-26

Este es el tercer y último artículo de nuestra serie sobre tipos de publicaciones personalizadas (CPT). Los temas que tratamos en los dos primeros fueron:

  • Tipos de publicaciones personalizadas (cómo crearlas)
  • Taxonomías personalizadas

En el primer y segundo artículo, registramos el tipo de publicación personalizada testimonials y la taxonomía personalizada testimonial_service . Ahora tenemos que mostrar los testimonios en nuestro sitio. Así que veremos cómo crear una plantilla para nuestros testimonios, cómo consultarlos y cómo mostrarlos en cualquier parte de nuestro sitio.

Plantillas de tipo de publicación personalizadas predeterminadas

Creamos nuestro CPT con el parámetro has_archive establecido en verdadero, que mostrará todos los testimonios en una página de archivo .

WordPress utiliza una jerarquía de plantillas para mostrar diferentes tipos de contenido. Para el tipo de publicación personalizada, buscará:

archivo-{post_type}.php
único-{post_type}.php

Si estas plantillas no están definidas en el tema, buscará las plantillas generales:

archivo.php
soltero.php

Si incluso estas plantillas no están definidas, se establecerá de forma predeterminada en la plantilla index.php .

En nuestro caso, el tema Shaka tiene single.php , pero no tiene la plantilla archive.php . Esto significa que, de forma predeterminada, utilizará la plantilla single.php para la página de testimonios individuales. También utilizará la plantilla index.php para mostrar todos los testimonios en la página de archivo de testimonios.

Los testimonios se mostrarán en la página de archivo de testimonios , que se ubicará en esta página:

http://tu-dominio-va-aquí.com/?post_type=testimonials

Si tiene habilitados los bonitos enlaces permanentes, también puede acceder a la página con esta URL:

http://tu-dominio-va-aqui.com/ testimonios

(Nota: si los bonitos enlaces permanentes no funcionan para usted, vaya a wp-admin -> Configuración -> Enlaces permanentes y configúrelos de la forma que desee y guarde la configuración)

Primero, debemos escribir algunos testimonios en los Testimonios de CPT recién registrados, para que tengamos algunos datos para mostrar. He agregado 3 testimonios y así es como se ve el diseño predeterminado de la página de archivo de testimonios en nuestro tema Shaka:

testimonios-predeterminado

Como puede ver, el diseño está bien, pero algunos de los datos que se muestran no son necesarios, como "por autor" y la fecha. Además, la taxonomía personalizada testimonial_service no se muestra, por lo que la agregaremos en nuestras plantillas personalizadas.

Creación de plantillas personalizadas para nuestro CPT

Como se mencionó en la sección anterior, tenemos que crear dos plantillas. El archive-testimonials.php y el single-testimonials.php . Solo crearemos la plantilla archive-testimonials.php para este ejemplo.

Deberíamos crear estos archivos en un tema secundario, pero por simplicidad, agregaré el archivo archive-testimonials.php directamente en el tema Shaka. Copiaré el archivo index.php, que servirá como punto de partida, y le cambiaré el nombre a archive-testimonials.php .

Eliminé el "por autor", el código de fecha y la barra lateral. He añadido las imágenes destacadas y la taxonomía personalizada del servicio de testimonios . He usado la función de WP the_terms que muestra una lista de términos específicos de WP, en nuestro caso, la taxonomía personalizada.

testimonios-terminados

Sé que estéticamente no se ve genial, pero ese no es el punto. Queríamos crear una estructura/diseño diferente de la página de archivo de testimonios con datos diferentes, y eso se logró en unos minutos.

También podríamos hacer lo mismo para la página de testimonios individuales. Copiaríamos el archivo single.php y le cambiaríamos el nombre a single-testimonials.php y cambiaríamos el código desde allí.

No mostré ningún código aquí ya que los ejemplos de código serían diferentes para cada tema y se necesita algún conocimiento básico de HTML y PHP para codificar plantillas. Pero siempre es más fácil modificar una plantilla existente, por eso usamos index.php como punto de partida.

Consulta de tipos de publicaciones personalizadas

Otra forma de mostrar tipos de publicaciones personalizadas en su sitio es usar la clase WP_Query para obtener los tipos de publicaciones personalizadas (recorrerlas y mostrarlas).

Supongamos que desea crear un widget que muestre todos los testimonios en un carrusel. O bien, que le gustaría mostrar testimonios relacionados (la misma taxonomía del servicio de testimonios) en la página de testimonios únicos. Usaría la clase WP_Query para recuperar los testimonios relevantes.

En nuestro ejemplo, buscaremos todos los testimonios que se encuentran en la taxonomía personalizada del servicio de testimonios de "buceo" y los mostraremos en una lista:

 <?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>

Como puede ver en el código anterior, primero preparamos la matriz de configuraciones de argumentos, que luego se usa en la inicialización de WP_Query . En esta matriz, definimos recuperar:

  • `testimonios` CPT,
  • obtener solo los testimonios que se publican,
  • obtenga solo los testimonios que se encuentran en la taxonomía personalizada de buceo `testimonial_service`.

Cuando se llama al new WP_Query , se recuperan los testimonios relevantes y podemos recorrerlos. En el ciclo, simplemente mostramos el título (que usé para el nombre del autor) y el contenido del testimonio en una lista simple. Además, siempre debemos usar la función wp_reset_postdata , para restablecer el ciclo original, cuando usamos un ciclo WP_Query. Esto asegurará que todo funcione después de que terminemos con nuestra consulta personalizada.

Estos han sido los conceptos básicos de los tipos de publicaciones personalizadas y espero que ahora entiendas cómo funcionan. Como con cualquier tema, siempre hay más detalles para entrar. Le aconsejaría que revise la documentación oficial de WP para todas las funciones y clases que usamos en estos ejemplos. Déjame saber en la sección de comentarios a continuación, si tienes alguna pregunta.