PHP: Entradas recientes con imagen destacada en WordPress via Shortcode

Detalles del tutorial

  • Tecnología: PHP
  • Dificultad: Nivel básico
  • Tiempo de realización: 15 minutos

Siguiendo con el anterior tutorial en el que creábamos un shortcode personalizado para wordpress, vamos con este pequeño script para crear un shortcode que muestre las entradas recientes de tu blog con sus correspondientes imágenes destacadas. Vamos a poder configurar además algunos parámetros desde el propio shortcode.

Código php en tu template de wordpress

Abre la carpeta de tu template, localiza el archivo functions.php y ábrelo con tu editor; éste archivo está presente en la mayoría de las plantillas de wordpress.
A continuación dejo el código y posteriormente comento algunas cosas importantes:


function shortcode_recientes($atts, $content = null, $code) {

//Uso: [recientes  limite="3" longitud_titulo="50" longitud_desc="50" thumbnail="1" tamano="50"]
//thumbnail="1" muestra imagen destacada. thumbnail="0" no muestra la imagen
	extract(shortcode_atts(array(
		'limite' => 5,
		'longitud_titulo' => 50,
		'longitud_desc' => 80,		
		'thumbnail' => false,
		'tamano' => 65
		
		
	), $atts));

	
	
   	$query = array('showposts' => $limite,  'orderby'=> 'date', 'order'=>'DESC', 'post_status' => 'publish', 'ignore_sticky_posts' => 1);

	
	$q = new WP_Query($query);
	if ($q->have_posts()) :
	$salida  = '';
	$salida .= '<ul class="listado-recientes">';



	/* comienzo while */
	while ($q->have_posts()) : $q->the_post();
	$salida .= '<li>';
	if ( has_post_thumbnail() && $thumbnail == true):
	$salida	.= '<a href="'.get_permalink().'" title="'.sprintf( "Enlace permanente a %s", get_the_title() ).'">';
	$salida	.= get_the_post_thumbnail(get_the_id(),array($tamano,$tamano),array('title'=>get_the_title(),'alt'=>get_the_title(),'class'=>'imageborder alignleft'));
	$salida	.= '</a>';
	endif;

	$salida	.= '<div class="posts_content">';
	$salida	.= '<a href="'.get_permalink().'" title="'.sprintf( "Enlace permanente a %s", get_the_title() ).'">';
	$salida	.= wp_html_excerpt (get_the_title(), $longitud_titulo );
	$salida	.= '</a>';
	$salida	.= '<p>';

        /* Calculo las categorías  */

        $categories = get_the_category();
        $separator = ' ';
        $output = '';
        if($categories){
                foreach($categories as $category) {
                        $output .= $category->cat_name.''.$separator;
                }
                $salida	.= trim($output, $separator);
        }
	$salida	.= '</p>';
        /* Escribo fecha  */
	$salida	.= '<p>'.get_the_time().'</p>';

        /* Escribo extracto  */	

	$excerpt = get_the_excerpt();
	$salida	.= ($excerpt)?'<p>'.wp_html_excerpt($excerpt,$longitud_desc).'...</p>':'';

	

	$salida	.= '</div>';
	$salida .= '</li>';
	endwhile;
	wp_reset_query();
	/* fin while */



	$salida .= '</ul>';
	endif;

	return $salida;

}
add_shortcode('recientes',    'shortcode_recientes');

Podemos configurar los siguientes valores:

  • limite – número máximo de entradas a mostrar
  • longitud_titulo – Longitud máxima de caracteres del título
  • longitud_desc – Longitud máxima de caracteres de la descripción
  • thumbnail – Mostrar thumbnail: valores 1 o 0 (mostrar o no mostrar)
  • tamano – Tamaño de la miniatura en píxeles (será cuadrada)

Si además queremos meter el shortcode en un widget lo tenemos muy fácil, añadimos esta línea al final del código anterior:

//para insertarlo en un widget del sidebar
add_filter('widget_text', 'do_shortcode');

imagen de insertar entradas relacionadas en widget de wordpress

Con esto vamos a poder incluir shortcodes en el widget de Texto o HTML arbitrario que viene por defecto en wordpress.

Insertar el shortcode

Podemos utilizar el shortcode en entradas, páginas o en el widget de texto como comentábamos antes. Un ejemplo de uso puede ser:

[recientes  limite="3" longitud_titulo="50" longitud_desc="50" thumbnail="1" tamano="50"]

Conclusión

Éste código puede ser ámpliamente mejorado y es fácil aumentar sus posibilidades, como por ejemplo con:

  • Dar la posibilidad de mostrar entradas recientes o relacionadas
  • Mostrar solamente las entradas de unas determinadas categorías
  • Mostrar fecha, autor, etc…

…Estamos abiertos a vuestras aportaciones.

Entrada archivada en:

Categorías: PHP

Etiquetas:

★ Por Raúl Flores (11 entradas) el

Fatal error: Uncaught Error: Call to undefined function wp_related_posts() in /usr/home/programacionmultimedia.net/web/wp-content/themes/echo/single.php:37 Stack trace: #0 /usr/home/programacionmultimedia.net/web/wp-includes/template-loader.php(74): include() #1 /usr/home/programacionmultimedia.net/web/wp-blog-header.php(19): require_once('/usr/home/progr...') #2 /usr/home/programacionmultimedia.net/web/index.php(17): require('/usr/home/progr...') #3 {main} thrown in /usr/home/programacionmultimedia.net/web/wp-content/themes/echo/single.php on line 37