Cómo mostrar entradas recientes dentro de tu contenido, sin bloques, con un shortcode

WordPress incorpora un widget que puedes utilizar para mostrar entradas recientes en cualquier barra lateral o área de widgets.

Asimismo, muchos temas WordPress ofrecen algún tipo de funcionalidad de «entradas recientes», con la que mostrar las últimas entradas en lugares específicos en alguna parte del tema.

El problema es que estos métodos no funcionan para mostrar entradas recientes dentro de entradas, páginas y tipos de contenidos personalizados. Vamos, dentro del propio contenido de la entrada. Para ello, podemos utilizar un shortcode.

Los shortcodes a escena

Para mostrar una lista de entradas relacionadas desde el editor de entradas de WordPress añade el siguiente fragmento de código al archivo functions.php de tu tema, o en forma de plugin, lo que prefieras:

// shortcode entradas recientes
function ayudawp_recent_posts_shortcode($atts, $content = null) {
	global $post;
	extract(shortcode_atts(array(
		'cat'     => '',
		'num'     => '5',
		'order'   => 'DESC',
		'orderby' => 'post_date',
	), $atts));
	$args = array(
		'cat'            => $cat,
		'posts_per_page' => $num,
		'order'          => $order,
		'orderby'        => $orderby,
	);
	$output = '';
	$posts = get_posts($args);
	foreach($posts as $post) {	
		setup_postdata($post);	
		$output .= '<li><a href="'. get_the_permalink() .'">'. get_the_title() .'</a></li>';	
	}
	wp_reset_postdata();
	return '<ul>'. $output .'</ul>';
}
add_shortcode('entradas_recientes', 'ayudawp_recent_posts_shortcode');

Si no haces ningún cambio, este código por sí solito crea un shortcode que extrae un conjunto personalizable de entradas de la base de datos de WordPress, y las muestra en tu entrada o página o cualquier otro tipo de contenido.

En realidad no hace falta que lo cambies, aunque podrías, por ejemplo para generar una visualización ($output) diferente, por cosa de gustos o estilos.

El código utiliza la función de WordPress add_shortcode() y la etiqueta de plantilla get_posts(). Básicamente, define todos los argumentos, hace una consulta a la base de datos con get_posts(), y luego muestra los resultados en formato de lista HTML.

Luego todo hace un gancho (hook) a WordPress con la Shortcode API, así que es algo totalmente estándar, y como get_posts() utiliza los mismos parámetros que WP_Query, puedes hacer montones de personalizaciones y consultas concretas y específicas sobre las entradas o cualquier otro tipo de contenido. Si quieres conocer sus posibilidades echa un vistazo a la documentación de WP_Query para coger ideas.

¿Cómo se usa el shortcode?

Para usar tu reciente y flamante shortcode de entradas recientes simplemente añádelo así a tu entrada o página, directamente o en un bloque de shortcode:

[entradas_recientes num="5" cat="12"]

El ejemplo anterior mostrará una lista de 5 entradas de la categoría que tenga el ID 12. Puedes, por supuesto, personalizar los atributos a tu gusto.

El shortcode también acepta algún atributo más, como orderorderby:

[entradas_recientes num="6" cat="" order="asc" orderby="rand"]

En este otro ejemplo se mostrarán 6 entradas, de cualquier categoría, en orden ascendente y aleatorio.

¿Y por qué no hacerlo con el bloque de entradas recientes?

Claro, puedes, pero allí donde no puedas usar el editor de bloques, o incluso quieras tener más control y personalización del contenido a mostrar, con una función personalizada lanzada desde un shortcode el cielo es el límite.

Y, por supuesto, también puedes usar el shortcode en el editor de bloques, insertándolo con un bloque de shortcode, nada te lo impide.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(6 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

10 comentarios en “Cómo mostrar entradas recientes dentro de tu contenido, sin bloques, con un shortcode”

  1. Vaya esto es algo que llevaba tiempo buscando, muchas veces he tenido que tirar de repositorios de bloques para solucionar este problema, con esto, lo tendre mucho mas facil. Muchas gracias por compartir

  2. Miguel del Pino

    Muy sencillo y útil.
    Dicen que este tipo de funcionalidades de entradas recientes o relacionadas afectan mucho al rendimiento. No mencionas nada en el artículo pero tiene toda la pinta al hacer llamadas a base de datos ¿no?
    Gracias

  3. SomosMarketers

    Muy interesante y muy útil. Gracias por la información.
    Particularmente tengo una duda que puede que con este shortcode la solucione. Estoy desarrollando una web para una biblioteca que tienen dos sedes (he creado dos directorios). El problema es que necesitan mostrar migas de pan y como las entradas están por defecto en el dominio raiz, cuando se accede a una entrada desde una de las sedes (con su menú personalizado), la miga de pan muestra la entrada a continuación de la raiz. La pregunta es: ¿Hay alguna forma de que las entradas se guarden en directorios distintos para que al seleccionar la entrada se muestre la ruta en las migas de pan, o se podría hacer algo en los enlaces permanentes para que las migas de pan inlcuyan el directorio que está haciendo uso de la entrada? Muchas gracias de antemano!!

  4. Tomas Moya Rodriguez

    Hola Fernando,
    Muchas gracias por el artículo, como podría hacer para que se vieran en 3 bloques repartidos en horizontal en la página?

    Gracias de antemano

      1. Tomas Moya Rodriguez

        Muchas gracias Fernando, el problema es, que quiero hacerlo con el editor clásico. Estoy utilizando un hook en la homepage de mi tema (con code snippets), Estoy añadiendo contenido en PHP, debajo de los productos mejor valorados. He añadido el shortcode, funciona a las mil maravillas. Pero, sale como listado, y me gustaría tener en ese gancho 3 columnas con 3 entradas en cada una de ellas. No puedo hacerlo con un bloque de columnas porque mi homepage está personalizada con un plugin de Storefront que solo permite contenido en la página en la parte superior de la misma, es una larga historia. Y ese bloque solo está en el nuevo editor Gutenberg.

        De todas formas muchas gracias por todo 🙂
        Salu2!

  5. hola fernando: ¿como podria hacer para que apareciera tb la fecha, en la linea inferior?
    Gracias por tu articulo en cualquier caso.
    Saludos.
    pedro.

Deja un comentario

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

 

Ir arriba Ir al contenido