Contenido

Usando Shortcodes como profesionales

4 feb

+ 10

Una de las novedades con las que WordPress 2.5 nos sorprendía era con la aparición de ShortCodes. Un sistema que nos permitía definir pseudo-tags que nos permitía ejecutar PHP en nuestros posts. Como vimos hace unos meses (casi un año) este sistema nos permite definir tags al estilo BBcode que puedan ser usados en nuestros posts, siendo estos reemplazados por el código generado asociado a él.

wp25_shortcode

¿Como funcionan?

Es muy sencillo, únicamente tendremos que definir nuestros propios shortcodes, abajo veremos algunos de ejemplos y los colocaremos en el fichero functions.php de nuestro theme o un un plugin destinado únicamente para ello. Allí, usando add_shortcode() iremos relacionándolos con las funcionalidades que deseemos realizar con cada uno de ellos.

Despues, una vez añadidos a WordPress, únicamente tendremos que escribir nuestro shortcode entre corchetes ([shortcode]) dentro de nuestro post y automáticamente al salir el post por pantalla este reemplazará nuestro shortcode por su equivaléncia en código.

La gente de Smashing Magazine hace una recopilación de algunos interesantes:

Última imagen asociada a un post:

function sc_postimage($atts, $content = null) {
	extract(shortcode_atts(array(
		"size" => 'thumbnail',
		"float" => 'none'
	), $atts));
	$images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=' . get_the_id() );
	foreach( $images as $imageID => $imagePost )
	$fullimage = wp_get_attachment_image($imageID, $size, false);
	$imagedata = wp_get_attachment_image_src($imageID, $size, false);
	$width = ($imagedata[1]+2);
	$height = ($imagedata[2]+2);
	return '<div class="postimage" style="width: '.$width.'px; height: '.$height.'px; float: '.$float.';">'.$fullimage.'</div>';
}
add_shortcode("postimage", "sc_postimage");

Modo de uso:

[postimage size="" float="left"]

Obtener los posts de una categoría desde un shortcode

function sc_liste($atts, $content = null) {
        extract(shortcode_atts(array(
                "num" => '5',
                "cat" => ''
        ), $atts));
        global $post;
        $myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
        $retour='<ul>';
        foreach($myposts as $post) :
                setup_postdata($post);
             $retour.='<li><a href="'.get_permalink().'">'.the_title("","",false).'</a></li>';
        endforeach;
        $retour.='</ul> ';
        return $retour;
}
add_shortcode("list", "sc_liste");

Modo de uso:

[liste num="3" cat="1"]

Insertar un lector de RSS en tus posts

//This file is needed to be able to use the wp_rss() function.
include_once(ABSPATH.WPINC.'/rss.php');

function readRss($atts) {
    extract(shortcode_atts(array(
	"feed" => 'http://',
      "num" => '1',
    ), $atts));

    return wp_rss($feed, $num);
}

add_shortcode('rss', 'readRss');

Modo de uso:

[rss feed="http://www.anieto2k.com/feed/" num="5"]
  • huuu que buena pinta tiene eso :P

  • Andrés, gracias…

    Como siempre aportando información y sobre todo en castellano, uno no se da cuenta hasta que tu lo expones de las posibilidades que tiene esta plataforma.

    Gracias de nuevo.

  • Excelente entrada! Los shortcodes de ejemplo estan muy buenos. Gracias.

  • Jo, me siento orgulloso ^_^.

    El shortcode para mostrar la ultima imagen del post es una creacion mia, a base de mucho investigar tanto el funcionamiento del sistema de shortcodes, como otras funciones internas de WordPress.

    La cosa empezo como una pregunta de como seria capaz hacer eso posible en el foro de WPRecipes, y al final lo descubri sin ayuda, y despues de un par de modificaciones para pulirlo, llego a la portada de WPRecipes.

    Que mi codigo llegue a esta web y pase por otras me alegra, ya que demuestra que es algo que ha sido util para la comunidad WP ^_^.

  • Gracias Andrés!

    El del listado de posts lo acabo de usar en un blog que estoy creando, voy a empezar a buscar otras gemas como esta en tu blog.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.