Es indudable la enorme utilidad que tienen los shortcodes en WordPress. Ya hemos visto en un artículo anterior las diversas situaciones en las que pueden ser de enorme utilidad, incluso hemos aprendido a crear los nuestros propios. Pero en ocasiones los plugins que instalamos también incluyen sus propios shortcodes. Estos shortcodes, al desinstalar los plugins que los generan, se quedan por toda la web, creando un mal efecto y, en casos extremos (como cuando se ha usado un maquetador visual para crear el diseño) puede incluso dejar toda la web llena de contenido basura, que además Google puede indexar. Así que hoy veremos cómo eliminar shortcodes huérfanos en WordPress.
Tabla de contenidos
Los shortcodes huérfanos
Digamos que haces una web con Divi. Divi es un tema que está muy de moda porque incluye su propio maquetador visual, y se pueden crear páginas con un buen diseño (aunque con pésimo rendimiento) sin conocimientos de maquetación, ni de HTML, ni de CSS ni nada de nada. Cumple su función.
Pero el problema es que Divi lo construye todo a base de shortcodes: sliders, cajas de contenido, columnas, tablas… Cualquier cosa que crees con el maquetador visual, estará hecha con shortcodes. Bien, pues imagina cuál es el resultado cuando, pasado un tiempo, decides que quieres cambiar de theme. No lo imagines, te lo muestro en un corto vídeo de tres minutos:
Una maravilla este Divi, ¿verdad? No, en serio, si tanta gente lo recomienda en internet por algo será. Aunque sólo sea por su programa de afiliados.
Bien, ya te puedes hacer una idea de por donde van los tiros. Igual que con Divi nos podemos encontrar un problema similar cuando dejamos de utilizar un plugin que nos generaba shortcodes, y encontrarnos con que hay shortcodes por toda la web, que no muestran nada más que algo así:
[shortcode_huerfano]
Vamos a ver cómo podemos solucionarlo.
Formas de eliminar shortcodes huérfanos
Pues sí, hay varias alternativas, unas más fáciles que otras. Y, como suele pasar en estos casos, las más fáciles son también las menos recomendables.
Empecemos por la primera.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
El plugin Remove Orphan Shortcodes
La primera solución es, como ya sospecharás, un plugin. Pero no te dejes engañar por su nombre: Remove Orphan Shortcodes no elimina los shortcodes huérfanos, sino que simplemente los filtra del contenido. Es decir, continúan en tu base de datos, pero tras hacer la llamada a la base de datos los filtra para que no se muestren en la web.
Y eso ya es bastante. Aunque los shortcodes continúen ahí, el tamaño extra que suponen en la base de datos no es tanto problema. El problema viene del filtrado: recuerda que cada llamada a contenido que WordPress realice a la base de datos deberá pasar por ese filtro. Y cada paso extra ralentiza la web.
Además, recuerda que cuando desactives el plugin los shortcodes volverán a hacer acto de presencia, porque en realidad siguen ahí. Tenemos que pensar en otra cosa.
Eliminar shortcodes sobrantes pensando out of the boxHay, como decía antes, una segunda alternativa: hacer que esos shortcodes sigan existiendo.
Ayer veíamos cómo podemos generar nuestros propios shortcodes en WordPress, con el contenido que nosotros queramos, algo que podíamos aprovechar para mejorar nuestra eficiencia con WordPress:
Pues bien, nada nos impide generar un shortcode que ahora está huérfano. Es decir, si al desinstalar un plugin nos deja la web llena de:
[shortcode_huerfano]
nosotros crearemos nuestro propio shortcode llamado shortcode_huerfano. ¿Y qué ha de hacer ese shortcode? Devolver nada. Sí, has leído bien: devolver nada. Ni contenido, ni un espacio en blanco, ni nada de nada. Existirá, pero no devolverá ningún output. De esta forma en cualquier lugar de nuestra web que se encuentre este shortcode… desaparecerá por arte de birlibirloque.
Ésta es la función:
function ejr_quita_shortcode () {
return;
}
add_shortcode ('shortcode_huerfano', 'ejr_quita_shortcode');
De hecho, lo mejor que podemos hacer cuando dejamos de necesitar un shortcode que hemos creado nosotros mismos no es simplemente eliminar la función, sino hacer que devuelva un output vacío. Fácil y rápido.
Cierto, tampoco elimina los shortcodes, y también afecta algo al rendimiento de la web, aunque mucho menos que el sistema anterior.
El único modo de eliminar de verdad los shortcodes huérfanos
Bien, de momento los hemos filtrado (fácil, pero mala solución) y hemos hecho que dejen de estar huérfanos, convirtiéndolos en mudos (no tan mala solución, pero tampoco idónea). Ninguna de las dos cosas eliminan realmente estos shortcodes porque, en realidad, sólo una cosa los elimina: eliminarlos. Obvio.
Obvio, pero no tan sencillo cuando se encuentran repartidos por docenas de páginas y/o entradas a lo largo de nuestra web. La única solución factible en esos casos es actuar, directamente, sobre la base de datos.
Y ésa es la realidad, maifrén: la única solución buena y realmente definitiva es actuar sobre la base de datos, haciendo que SQL busque y elimine los shortcodes malditos dentro de las tablas, en el contenido.
Por supuesto, no es una operación que se pueda hacer a la ligera: copia de seguridad, exportación, comandos SQL, importación… sí, una operación delicada, pero al terminar no quedará ni el más mínimo rastro en tu web de todos esos shortcodes.
Si necesitas algo así y no sabes cómo hacerlo, no tienes más que utilizar el formulario de contacto. Encontraremos una solución.
Marta dice
Hola Enrique, lo primero felicitarte por tu trabajo. Siempre eres claro y conciso. ¿Podrías recomendarme un tema para tienda online? Aunque no sea determinante me fío y mucho de tu criterio y sería de gran ayuda. Juraría que el otro día en un tutorial hablabas de uno, pero ahora no recuerdo dónde lo vi. Gracias de antemano, ¡también por no tener pelos en la lengua!
Enrique J. Ros dice
Hola Marta
El más recomendable en estos momentos es, con mucho, Storefront.
Un saludo
Marta dice
Muchas gracias por responderme y por la recomendación.