Extendiendo WordPress con Custom Post Types (II)

23/02/2015 | Clara

Seguimos profundizando en los tipos de post personalizados en WordPress y en este caso, tendremos que tocar algo de código… ¡Que no cunda el pánico!

Tal y como señalábamos en Extendiendo WordPress con Custom Post Types (I), de acuerdo con la jerarquía de plantillas del CMS, dichos posts se mostrarán por defecto en las plantillas archive.php (el listado) y single.php (la ficha de uno de los ítems del listado), o en archive-mitipodepostpersonalizado.php y single-mitipodepostpersonalizazo.php si hubiéramos creado dichas plantillas y seleccionado la opción Has archive -> True en la configuración del tipo de post. Sin embargo, en muchas ocasiones necesitaremos mostrar esos posts en otros lugares de nuestro sitio web. El caso más común, con el que solemos encontramos frecuentemente en VALBHY, es que el cliente quiera un módulo en portada donde se muestren los últimas entradas de ese tipo concreto de post. Para ello tendremos que hacer una llamada específica en la plantilla correspondiente.

Mostrar los tipos de posts personalizados en portada

La plantilla de portada será, según el tema que tengamos entre manos, front-page.php, home.php o index.php. (Para más información sobre jerarquía de plantillas, dirigirse a la documentación de WordPress: http://codex.wordpress.org/images/9/96/wp-template-hierarchy.jpg). Será en esas plantillas donde tendremos que insertar nuestro código (el llamado bucle personalizado) para que se muestren los datos correspondientes a ese tipo de post. A continuación, mostramos un código muy sencillito que mostraría las últimas tres entradas volcadas, del tipo de post personalizado que creamos en el artículo anterior (“proyecto”). Lo que mostraremos de dichas entradas será, el título, la imagen destacada, el extracto del contenido y un link de leer más que dirige al enlace permanente del post.

<!-- Módulo de llamada a Mi tipo de post personalizado -->
<div class="modulo ultimos-proyectos">
 <h1 class="ultimos-proyectos">&Uacute;ltimos proyectos</h1>
 <?php 
 $args = array(
 'posts_per_page' => '3', //número de post que queremos mostrar en el listado
 'post_type' => 'proyecto', //slug de nuestro tipo de post personalizado, determina el tipo de contenido a devolver
 );
 
 // Llamada WP_Query 
 $misProyectos = new WP_Query( $args ); 
 ?>

 <?php if ( $misProyectos->have_posts() ) : ?>
 
 <!-- El bucle -->
 <?php while ( $misProyectos->have_posts() ) : $misProyectos->the_post(); ?>
 <div class="proyecto">
 <h2><?php the_title(); //llamamos al título del post ?></h2>
 <?php the_post_thumbnail(); //llamamos a la imagen destacada del post ?>
 <p><?php the_excerpt(); //llamamos al extracto del post ?></p>
 <span><a href="<?php the_permalink(); //llamamos al enlace permanente del post?>">Leer m&aacute;s</a></span> 
 </div> 
 <?php endwhile; ?><!-- Fin del bucle --> 
 
 <?php wp_reset_postdata(); ?>
 
 <?php endif; ?>
</div>

Con esto ya tendríamos nuestro módulo listo y, asignando estilos a cada selector, eso ya dependerá de cada uno, la cosa podría quedar más o menos así:

Portada últimos proyectos

Ese mismo bucle puedes insertarlo, por ejemplo, en la plantilla sidebar.php, de manera que los tres últimos proyectos que hayas introducido en el gestor de contenidos se mostrarán también en la barra lateral de aquellas plantillas que incorporen sidebar. Las posibilidades de personalización de lo que quieres que se muestre, son múltiples. Si no quisieras que se mostrara el extracto, bastaría con eliminar del bucle la siguiente línea de código:

<p><?php the_excerpt(); //llamamos al extracto del post ?></p>

Y si quisiéramos mostrar la categoría que hemos asignado a cada proyecto, simplemente habría que introducir en el bucle esta línea:

<?php the_category(); ?>

Y así, ad infinítum. Volveremos sobre WordPress más adelante, para seguir ahondando en temas, funciones y plugins que te harán la vida más fácil.

1 thought on “Extendiendo WordPress con Custom Post Types (II)

  1. Excelente aporte. Muchas gracias por estos dos artículos porque era exactamente lo que estaba buscando para el proyecto actual. Saludos y gracias por compartir.

Deja un comentario

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