ThemeForest recientemente actualizó sus requisitos de envío de temas de WordPress para ser más estrictos y estar más en línea con las mejores prácticas de desarrollo de temas de WordPress.
Las directrices requieren el uso de varias de las características principales de WordPress, ganchos de tema estándar y prohíben funciones de PHP (como base64 y fopen) que realmente nunca debieron haber tenido cabida en un tema de WordPress para empezar.
Básicamente, casi la política de revisión de temas de WordPress.org, con algunas variaciones.
En general, es un paso en la dirección correcta y se mueve para promover las mejores prácticas en uno de los mercados de temas de WordPress más populares en la red. Solo hay un problema...
Shortcodes admisibles
Sin embargo, algo que llamó particularmente mi atención fue cómo se permitía cierta funcionalidad de "shortcode admisible" (es decir, incluyéndolos directamente a través del archivo functions.php del tema). Los que se enumeraron como "admisibles" incluían lo siguiente:
- botones
- tablas de precios
- contenedores de imágenes
- letras capitales
- listas
Los shortcodes inadmisibles incluyen: mapas, acordeones y pestañas, contenidos en cajas, columnas, formularios de contacto, gráficos.
El problema con los shortcodes en los temas
No puedo expresarlo mejor de lo que Justin Tadlock ya lo ha hecho. Uno de los problemas más notables es que, cuando un usuario cambia de tema, los shortcodes ya no se analizarán.
Digamos que el tema “Súper Increíble” tuviera una función de shortcode que generara un botón grande y verde con un enlace al escribir algo como [button url="http://example.com"]Botón Verde Grande[/button].
Cuando cambias a otro tema (seamos sinceros, la gente se aburre fácilmente de los temas), ya no hay botón verde grande. En su lugar, ves el shortcode sin procesar en la publicación como si fuera cualquier otro contenido, así:
[button url=”http://example.com”]Botón Verde Grande[/button]
Se ve feo, confuso y fuera de lugar, y es una molestia para el usuario tener que volver y eliminarlos/reemplazarlos todos.
El Otro Problema con los Shortcodes en los Temas
Algo que Tadlock mencionó en su artículo “Lidiando con la locura de los shortcodes” es que muchos shortcodes son tan simples y parecidos al HTML, que incluso podría ser mejor instruir a los usuarios a escribir (*¡qué horror!*) código HTML real.
El mismo shortcode [button url="http://example.com"]Texto del Botón[/button] en mi ejemplo anterior podría reescribirse fácilmente como algo así:
<a href="http://example.com" class="button">Texto del botón aquí</a>
Si bien es posible que no haya código CSS que estilice el selector .button en un nuevo tema, al menos aparecerá un enlace normal. Lo cual es una gran mejora en comparación con un shortcode [button] sin procesar que aparece en el contenido de una publicación.
Además, creo que todo usuario de WordPress debería tener al menos una comprensión básica del código HTML. Enseñándoles, incluso en pequeñas dosis (como cómo construir un enlace), ayudará. Si pueden entender un shortcode, no les costará mucho más entender HTML básico.
¡Pero a los Usuarios No Les Importa!
Un argumento común que veo defendiendo todo tipo de malas prácticas en el desarrollo de temas es que a los usuarios simplemente no les importa. Quiero decir, tal vez nunca quieran actualizar su tema, en cuyo caso, este problema de los shortcodes sería un punto irrelevante.
El problema es que algunos usuarios inevitablemente querrán cambiar de tema algún día. Algunos usuarios querrán instalar un plugin que podría entrar en conflicto con algún otro código mal diseñado en un tema.
Entonces, probablemente les importará, y probablemente se preguntarán si el tema que compraron con cientos de shortcodes incorporados y otras características superfluas realmente valió la pena.
La forma correcta de incluir shortcodes
Ponlo en un plugin. Un plugin realmente simple. No necesita un panel de opciones separado. Simplemente copia y pega lo que ibas a incluir a través del archivo functions.php de tu tema, y ponlo en un plugin en su lugar.
Incluso podría incluirse con algo como TGM Plugin Activation para que sea obligatorio al activar el tema. O no. Un tema sigue siendo un tema sin shortcodes.
De esta manera, si el usuario cambia de tema, los shortcodes seguirán funcionando, porque esa funcionalidad es manejada por el plugin que sigue activo.
Tal vez el plugin también podría enlistar estilos para los shortcodes también. De esta manera, los botones verdes grandes que incluiste con el shortcode [button] seguirán siendo botones verdes grandes, independientemente del tema utilizado.
¿Por qué ThemeForest permitió shortcodes "admisibles"?
Es difícil decir cuál fue exactamente el razonamiento detrás de esta decisión. Japh Thomson, un evangelista de WordPress en Envato (la empresa matriz de ThemeForest) dijo esto al respecto en un comentario en WPMU.org:
La funcionalidad compleja de shortcodes realmente debería residir en un plugin, no en un tema. También tiene sentido cuando consideramos que la mayoría de nuestros autores tienen múltiples temas.
Obviamente, él lo entiende. Así que es un misterio para mí por qué habría algún "shortcode admisible" en absoluto. Y sí, me doy cuenta de que usó la palabra "complejo" en la cita anterior, y los shortcodes admisibles tienden a ser bastante simples (letras capitales, listas, etc.).
Por simple que sea un shortcode, los problemas que describí anteriormente seguirán existiendo. ThemeForest ha demostrado ser receptivo a los comentarios de la comunidad, por lo que es posible que esta regla se modifique en el futuro.
Conclusión
Me doy cuenta de que esta publicación parece un poco quisquillosa, y estas nuevas directrices son definitivamente un gran paso en la dirección correcta. Pero realmente no hay ninguna razón por la que se deba permitir ningún shortcode en un tema, simple o no.
¿Se te ocurre alguna situación en la que un tema lanzado públicamente necesite absolutamente incluir funcionalidad de shortcode a través de su propio functions.php?
— Theme Lab (@themelab) 9 de julio de 2013
Alerta de spoiler: No obtuve ninguna respuesta a ese tuit con un ejemplo real de un shortcode que absolutamente necesitara incluirse en un tema lanzado públicamente.
Eso es porque simplemente no es fácil de usar para un usuario tener que volver y reemplazar cientos de shortcodes de botones después de cambiar a un tema que no tiene el mismo soporte de shortcodes.
¡Muchas gracias por esta publicación! Acabo de comprar un tema de ThemeForest y tengo el mismo problema. Cuando subimos el tema, las páginas dicen que el shortcode no es compatible... ¿qué hacer ahora para que sea compatible? ¡Gracias!
Si bien estoy de acuerdo en que los shortcodes deben residir dentro de un plugin en lugar de un tema, el código sin analizar aún aparecerá cuando el plugin se desactive o sea reemplazado por otro plugin de shortcodes. De cualquier manera, puede ser una molestia para la persona que realiza el cambio.
Aprender HTML básico parece lo mejor.
Totalmente de acuerdo con esto. Los temas deben manejar el diseño y los estilos. Cualquier cosa que agregue funciones adicionales debe ir en un plugin.
Tengo la misma postura sobre los shortcodes, pero puedo ver la razón por la que algunos temas los incluyen para que los usuarios no expertos en tecnología agreguen funciones fácilmente y, a su vez, ayuden a vender más temas de desarrolladores.
¡Así es!
También sería bueno si hubiera algún tipo de degradación elegante para los shortcodes que ya no están activos.
Por lo tanto, los posibles problemas se pueden evitar con funciones que se puedan agregar en el futuro en diferentes temas. ¡Los problemas de mantenimiento son argumentos de compra importantes, al menos para mí!
Estoy completamente de acuerdo contigo. Muy pocas personas se quedan con un solo tema para siempre, a menos que sea completamente personalizado (y entonces no tienes el problema de Themeforest) y los shortcodes son una molestia para tratar. Recientemente descubrí este problema cuando comencé a cambiar de un tema de Theme-Junkie a un tema de StudioPress/Genesis. Ahora he puesto el cambio en espera, a pesar de haber gastado $80 en él, porque hay demasiado que cambiar incluso en mi nuevo sitio.
Hola Leland, ¡gran publicación, gracias por tus ideas!
Lanzaremos una actualización de estos requisitos en breve, basándonos en los comentarios de nuestros autores, y espero que queden satisfechos con algunos de los ajustes que hemos realizado (especialmente en relación con los shortcodes) 🙂
Creo que no es solo un problema de compatibilidad con otros temas, sino también un problema relacionado con el contenido. Un shortcode debería ser solo una ayuda para procesar contenido, y los temas solo deberían mostrar contenido preprocesado, no procesar el contenido por sí mismos. Cuando los temas procesan shortcodes por su cuenta, tratan ese fragmento de texto (o al menos así parece que lo hace el desarrollador) como una llamada a un elemento visual, no a uno funcional (que es lo que realmente es), como si faltara el alcance de lo que es un tema. Esa práctica muestra una falta de claridad sobre qué son el contenido, la funcionalidad y la visualización, y cómo se deben gestionar esos elementos (es decir, el contenido debe almacenarse en la base de datos, la funcionalidad debe gestionarse a través del núcleo de WP y los plugins, y la visualización a través de los temas; solo como un ejemplo muy básico). No es necesario ser un experto en contenido, un programador experimentado o un gran diseñador para saber estas cosas, solo un poco de atención y una reflexión cuidadosa sobre lo que ofrecemos a nuestros usuarios, y lo fácil o difícil que les resultará usar nuestros productos. Creo que está bien si no conoces las diferencias pero estás abierto a aprender y mejorar, pero, por otro lado, conocer y tener en cuenta todas estas cosas y ofrecer shortcodes (y cualquier otra cosa relacionada con la funcionalidad) en los temas de todos modos, eso me parece una práctica desleal que hace que tus usuarios sean cautivos de tu producto. Sé que a veces la línea entre visualización y funcionalidad es muy delgada, pero en la mayoría de los casos la diferencia es indiscutible.
Perdón por la respuesta larga, este es un tema que realmente me interesa. Gran publicación 🙂
Hola Andrés, no necesitas disculparte por la respuesta larga, ¡haces algunos puntos geniales!
Gracias por esto… Tengo problemas continuos con los shortcodes en los temas que he comprado. Y cuando los rediseño, tengo código obsoleto en todas partes que necesita ser reemplazado.
Peter, ese es un ejemplo perfecto del problema con los shortcodes en los temas.
Todo empeora cuando otra funcionalidad no presentacional también se incluye en un tema, tal vez algo de lo que hablar en una futura publicación.