Programa tus propios shortcodes en WordPress

Los shortcodes son códigos de macro y por tanto nos sirven para automatizar tareas. Los shortcodes pueden incluirse en entradas, páginas y tipos de entradas personalizadas, e incluso en widgets de texto utilizando los filtros adecuados. El código de los shortcodes debes añadirlo al archivo functions.php de tu tema o a tu plugin de funciones personales.

Para crear un shortcode se utiliza la función add_shortcode($tag, $func) donde $tag es la etiqueta que se buscará en el contenido del post, es como su nombre, y $func es la función que se ejecutará cuando se encuentre esa etiqueta en el contenido. Así, un shortcode simple podría ser el siguiente:

<?php
add_shortcode('saludo', 'galusso_saludo');
function galusso_saludo(){
    return 'Hola, buenas tardes.'
}
?>

Cuando en el contenido de nuestro post pongamos [saludo], el visitante de nuestra web verá Hola, buenas tardes.

Pero esto no es todo, los shortcodes admiten atributos que permiten pasar argumentos a las funciones personalizadas, lo que los hace mucho más potentes:

<?php
add_shortcode('saludo', 'galusso_saludo');
function galusso_saludo($atts, $content = null) {
    // $args contiene los atributos del shortcode
    // El array contiene los valores por defecto de los atributos si no se especifican
    $args = shortcode_atts(
        array(
            'nombre' => 'Juan',
        ),
        $atts);

    /* Asignamos a la variable $nombre el atributo nombre
        para utilizarla en la devolución de la función */
    $nombre = $args['nombre'];
	
    return "Hola $nombre, buenas tardes.";
}
?>

En este caso, cuando utilicemos [saludo] lo que se verá será Hola Juan, buenas tardes ya que Juan es el nombre por defecto y no lo hemos especificado en los atributos, mientras que si utilizamos [saludo nombre='Violeta'], el saludo será Hola Violeta, buenas tardes.

En fin, son ejemplos sin ninguna utilidad práctica pero que sirven de base para poder empezar a programar vuestros propios shortcodes. Espero que os sirvan.




Leave a Reply

Your email address will not be published. Required fields are marked *