Los shortcodes, mejor en un plugin

Por Ernesto Jiménez · 30 octubre, 2014
Publicado en Diseño web

Los shortcodes son el puente perfecto entre el front-end y el back-end. Son la herramienta fundamental para que puedas añadir a tus páginas, desde el CMS, elementos más complejos que un simple párrafo o una imagen. Aunque lo ideal sería no tener que echar mano de estos trozos de código tan feos, lo cierto es que a veces es imprescindible si queremos «romper» los límites del editor de WordPress.

Lo primero que aprendemos cuando queremos hacer shortcodes es que tenemos que incluirlo en el archivo functions.php de nuestro tema. Pero somos muy ordenados y preferimos tenerlos en un archivo exclusivo para ellos, así que creamos shortcodes.php y lo incluimos en el archivo de funciones. Mucho mejor. Así es que como lo he hecho desde siempre.

Creo que ha llegado la hora de cambiar esta manera de hacerlo. Me parece mejor crearlos como plugin que incluirlos en el archivo de funciones de un tema.

Aunque los shortcodes estén íntimamente ligados, por esencia, con un tema (son elementos maquetados para un tema, con sus css, su comportamiento JavaScript…).

Si cambiamos de tema los shortcodes no se ejecutarán.

Como decía al principio, los shortcodes están entre el front-end y el back-end, relacionan el motor con la presentación del contenido. Un shortcode va a «pintar» en el navegador. Escribe etiquetas HTML con sus clases CSS para formar cualquier elemento que se te ocurra: un formulario de suscripción, cajas de iconos, textos destacados, posts destacados… Están íntimamente ligados al tema en el que se usan, se enmarcan en el sistema visual del resto del sitio (o deberían, al menos). Entonces, ¿por qué sacarlos del archivo de funciones y ponerlos en un plugin?

La primera razón es ética. Estás atando al usuario a un tema, no podrá cambiar fácilmente porque el contenido de su sitio depende de estos shortcodes para mostrarse correctamente. Al no tener declarados los shortcodes, las etiquetas se harán visibles y no queda muy bien tener en la página [texto_destacado]Este es un texto destacado [/texto_destacado].

La segunda es práctica. Cuando hagamos una nueva versión del sitio no tendremos que mover todos los shortcodes, solo tenemos que mantener activo nuestro plugin.

Si el usuario cambia a otro tema y mantiene activo el plugin de los shortcodes del tema anterior, su nuevo sitio mostrará el contenido envuelto en las clases del shortcode que, aunque no estén definidas en el nuevo tema, no romperán la maqueta.

Ejemplo:


<?php
/*
Plugin Name: Marta's Playground Shortocdes
Plugin URI: http://ernestojimenez.net
Description: Include the required shortcodes for the custom exclusive WordPress theme Marta's Playground by the awesome designer Ernesto Jimenez
Author: Ernesto Jiménez
Version: 1.0
Author URI: http://ernestojimenez.net
*/
function cornerstone_block_shortcode( $atts, $content = null ){
   extract(shortcode_atts(array(
), $atts));
   $str = '';
   $str .= '<div class="cornerstone__block '.$atts['class'].'">';
   $str .= do_shortcode($content);
   $str .= '</div>';
   return $str;
}
add_shortcode('cornerstone_block', 'cornerstone_block_shortcode');

Aunque los utilicemos como recurso exclusivo para un tema concreto creo que podemos ponerle las cosas más fáciles al usuario si ubicamos nuestros shortcodes en un plugin. Tendremos que tener en cuenta, eso sí, que debemos avisar al administrador del sitio de que el tema necesita de ese plugin para funcionar correctamente. Yo uso la librería TGM Plugin Activation para esta tarea pero también lo podrías instalar en la carpeta mu-plugins (must use plugins), aunque esta última opción me parece menos transparente.

En cualquier caso, me parece que como diseñadores tenemos la responsabilidad de pensar en el largo plazo, no solo de nuestro código, sino del proyecto en sí.

¿Te ha gustado el post? Puedes seguirme en Twitter o en Facebook donde seguimos hablando de diseño web