Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
shortcodes

Cómo eliminar los Shortcodes huérfanos en WordPress

Los shortcodes son códigos cortos que habitualmente utilizamos en el editor de texto para obtener una funcionalidad avanzada en el contenido de nuestras entradas, páginas, widgets, etc… En el artículo Shortcodes: ¿Qué son y cómo crearlos? los vimos con detalle y ejemplos prácticos.

Muchos temas y plugins utilizan shortcodes por ejemplo para incluir formularios de contacto, galerías de imágenes, bloques de información y/o aviso, publicidad, información relacionada, etc… pero ¿qué pasaría si el día de mañana decides cambiar de tema o dejas de utilizar un plugin que hace uso de ellos porque encuentras uno nuevo más completo o que te gusta más que el anterior?

Pues lo primero que pasa es que esos shortcodes dejarán de funcionar. Es decir, si tienes un plugin para agregar galerías de imágenes que utiliza shortcodes del tipo [gallery-plugin id=”1”], en el momento que desactives el plugin, ese shortcode no se ejecutará, y en el contenido de tu entrada o página verás literalmente como una cadena de texto: [gallery-plugin id=”1”]. Cuando esto pasa decimos que el shortcode se ha quedado huérfano.

Ante esta situación, podrías ir página por página y entrada por entrada revisando en cuál de ellas utilizas éste shortcode y eliminarlo manualmente. Si son pocas páginas puedes planteártelo, pero si tienes una cantidad ingente de posts, es cuando debes pensar en otras alternativas. Para evaluarlo, puedes crear un shortcode en functions.php que busque en todas las entradas/páginas el/los shortcodes huérfanos:

Ahora crea una página nueva y escribe el shortcode [shortcodefinder find=’orphanshortcodeID’], donde orphanshortcodeID será el nombre de tu shortcode huérfano. Te mostrará un listado con todas las entradas y páginas donde se encuentra.

Si son muchas y te decides simplemente por ocultar el shortcode, añade en el functions.php o en tu plugin de utilidades la siguiente línea:

NOTA

Ésta línea no lo borrará del contenido, simplemente no lo mostrará. Si quisieras realmente borrarlo de la base de datos tendrías que ir post por post borrándolos manualmente, o si son muchos y tienes conocimientos avanzados de MySQL, hacer una query directamente en base de datos eliminando las coincidencias con tu shortcode mediante expresiones regulares, siempre sacando una copia de seguridad de la base de datos primero por si las moscas 😉

Como casi cualquier cosa en WordPress, también puedes usar un plugin para ocultar los shortcodes huérfanos. Te recomiendo Remove Orphan Shortcodes. No necesita configuración, simplemente busca shortcodes en el contenido (the_content) de tus entradas y páginas que coincidan con los declarados en la variable global $shortcode_tags, y en caso de encontrar alguno que no exista en $shortcode_tags, lo oculta.

Puede que también te interese

Theme Customization API: Cómo añadir nuestras propias opciones en el personalizador de WordPress
Theme Customization API: Cómo añadir nuestras propias opciones en el personalizador de WordPress
El personalizador de WordPress fue añadido en la versión 3.4, y te permite de una forma visual hacer y ver cómo quedan los cambios que…
Creando un tema desde cero para WordPress parte 2: Escribiendo el tema
Creando un tema desde cero para WordPress parte 2: Escribiendo el tema
1. Creando un tema desde cero para WordPress: Consideraciones previas 2. Creando un tema desde cero para WordPress: Escribiendo el tema 3. Creando un tema…
Cómo agregar reCaptcha a un formulario de contacto personalizado en WordPress sin Plugins
Cómo agregar reCaptcha a un formulario de contacto personalizado en WordPress sin Plugins
Vamos a ver cómo podemos agregar reCaptcha a un formulario personalizado en WordPress sin plugins, es decir, en un desarrollo a medida. Para instalar la…
La famosa instalación de WordPress en 30 minutos
La famosa instalación de WordPress en 30 minutos
Con este título tuve el honor de participar como ponente en la pasada WordCamp Sevilla 2016, celebrada en la Escuela de Organización Industrial (EOI). Antes…