X

Mostrar contenido aleatorio en WordPress

En este artículo veremos como crear un Shortcode para mostrar entradas, páginas, o cualquier otro tipo de contenido de manera aleatoria en WordPress.

 

Resultado Final

Al final queremos obtener algo similar a lo que se muestra en la siguiente imagen:

 

Código para crear Shortcode de contenido aleatorio

El siguiente código crea un Shortcode con parámetros para mostrar diferentes tipos de contenido de manera aleatoria.

El nombre del Shortcode es [dcms-random-content] y los parámetros que podemos usar son:

  • title: Título que aparecerá sobre la lista
  • post_type: Tipo de contenido, como: posts, page, product, etc. por defecto es posts
  • qty: Cantidad de elementos a mostrar, por defecto es 4

 

function dcms_random_content($atts) { 

	$default_atts = ['qty' => '4', 'post_type' => 'post', 'title' => ''];
	$atts 	= shortcode_atts($default_atts, $atts, 'dcms-random-content' );

	$args = [
		'post_type' => $atts['post_type'],
		'posts_per_page' => (int)$atts['qty'],
		'orderby'   => 'rand',
		'post_status' => 'published'
	];

	$query = new WP_Query( $args );
	  
	$string = '';

	if ( $query->have_posts() ) {	  
		if ( $atts['title'] ){
			$string = '<h3>'.$atts['title'].'</h3>';
		}

		$string .= '<ul class="rand-content">';
			while ( $query->have_posts() ) {
				$query->the_post();
				$string .= '<li>➜ <a href="'. get_permalink() .'">'. get_the_title() .'</a></li>';
			}
		$string .= '</ul>';
		wp_reset_postdata();
	}
	  
	return $string;
} 
	
add_shortcode('dcms-random-content','dcms_random_content');
Puedes agregar el código anterior como parte del archivo functions.php de tu tema hijo o usando algún plugin de snippets.

 
En el código anterior:

  • Creamos el shortcode llamado dcms-random-content, que hace referencia a la función dcms_random_content
  • El Shortcode tendrá atributos, por lo que definiremos sus valores por defecto en la variable $default_atts
  • También hacemos uso de la función shortcode_atts() para establecer los valores por defecto
  • Usaremos la clase WP_Query() para obtener los datos pasando diferentes argumentos y establecido por los atributos
  • Todo se ira concatenando en la variable $string
  • Comprobamos si la consulta devuelve valores, establecemos el título en caso exista como atributo
  • Creamos una lista HTML con los valores devueltos por la consulta, cada vez que el while se ejecuta vamos concatenando elementos y usando las funciones de WordPress para mover el puntero y obtener los datos
  • Al final del bucle reseteamos la consulta con la función wp_reset_postdata()
  • Finalmente retornamos la variable $string

 

Uso del Shortcode

Se puede usar el Shortcode como parte del contenido de alguna página o entrada, también como un Widget de Shortcode.

Para mostrar entradas, que es lo que muestra por defecto podemos usar algo similar a la siguiente imagen:

 
Para mostrar otro tipo de contenido usamos el parámetro post_type, por ejemplo para mostrar productos:

 

Conclusión

Como has podido comprobar puedes mostrar cualquier tipo de contenido usando las funciones de WordPress, en este caso lo hemos realizado a través de la creación de un Shortcode que nos facilitará la configuración de que tipo de contenido, la cantidad y el título a mostrar.

 

Categorías: Themes
Etiquetas: mejoras