De entre todas las novedades de WordPress, ShortCode es una de las que menos bombo se le ha dado. Y la verdad es que merece la pena perder un rato en explicar de que va esta nueva funcionalidad.
BBCode
Los usuarios de foros, conocerán el formato BBCode, aquel compuesto de tags envueltos por [], similar al formato HTML. Este formato está muy extendido en internet y es fácil de memorizar. Veamos un ejemplo:
[b]Este text en negrita[/b] ==> <strong>Este text en negrita</strong>
Partiendo de esta base podemos pasar a definir que es ShortCode.
ShortCode
ShortCode API, es un conjunto de funciones que permite definir nuestros propios tags BBCode para insertarlos dentro de nuestros posts. La gracia de este sistema es que podemos ejecutar código PHP dentro del contenido de nuestros posts. Lo que además de ser muy interesante, evidentemente es muy peligroso.
add_shortcode($tag, $function);
// [footag foo="bar"]
function footag_func($atts) {
return @"foo = {$atts['foo']}";
}
// My Caption
function caption_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'class' => 'caption',
), $atts ) );
return '<span class="' . attribtue_escape($caption) . '">' . $content . '</span>';
}
add_shortcode('caption', 'caption_shortcode');
add_shortcode('footag', 'footag_func');
Si nos fijamos en el código anterior, vemos que el tag BBCode se define mediante la función add_shortcode()
, encargada de relacionar el tag con la función correspondiente.
remove_shortcode($tag);
Función que nos permite eliminar el funcionamiento de un shortcode, para ello indicaremos el tag que queremos eliminar de los disponibles.
remove_shortcode("caption"); // Eliminamos
remove_all_shortcodes();
Si deseamos eliminar todos los shortcodes disponibles en nuestro WordPress, simplemente tenemos que usar esta función y se encargará de desactivarlos todos.
remove_all_shortcodes(); // Todos los shortcodes eliminados
shortcode_atts($pairs, $atts);
Función que nos devuelve un array de pares con los atributos por defecto para nuestros shortcodes.
$a = shortcode_atts( array(
'title' => 'My Title'
'foo' => 123,
), $atts );
do_shortcode($content);
Función que nos devuelve el resultado de la ejecución del texto con el shortcode reemplazado por la función.
do_shortcode('My Caption'); // <span class="headline">My Caption</span>
¿Donde poner este código?
WordPress no indica donde ubicar el código correspondiente a los shortcodes, pero el fichero en el que están definidas las funciones que hacen posible el funcionamiento, está ubicado en wp-includes/shortcodes.php
. En él no hace referencia a ningún fichero externo, ubicado en una ruta algo más personal como wp-content/
.
Como casi todo el código de WordPress puede ser insertado en cualquier sitio y de cualquier forma:
Pero quizas la forma más óptima hubiera sido añadir un par de líneas y sacar del core de WordPress una funcionalidad que permite tal nivel de personalización.
<?php
if ( file_exists(ABSPATH . 'wp-content/my-shortcodes.php') )
require_once (ABSPATH . 'wp-content/my-shortcodes.php');
¿Algo así al inicio del fichero shorcodes.php? De esta forma disponemos de un fichero externo que nos permite tener definidos nuestros shortcodes por encima de todas las futuras actualizaciones…. paciencia 😀
3 comentarios, 5 referencias
+
#