Descubre en este tutorial cómo detectar si un tema de WordPress usa el fichero theme.json y asegurarte de ejecutar una función (o cualquier código) solo si lo tiene.
WordPress 5.8 introdujo el fichero theme.json, que es una de las piezas clave sobre las que se fundamentan los temas de bloques.
Lo bueno es que el fichero theme.json se puede usar en temas clásicos, por eso preparé un tutorial explicando todo el potencial que ofrece.
Más recientemente, en WordPress 6.1 se introdujeron varios filtros para poder acceder al fichero theme.json:
wp_theme_json_data_default
: se «engancha» a los datos que provee WordPresswp_theme_json_data_blocks
: se «engancha» a los datos que proveen los bloqueswp_theme_json_data_user
: se «engancha» a los datos que provee el usuariowp_theme_json_data_theme
: se «engancha» a los datos que provee el tema
Esto permite que este fichero sea totalmente extendible. Pero si estás desarrollando un plugin o similar, lo recomendable es comprobar si este fichero existe o no donde se va a ejecutar el código y usar un condicional para que solo lo haga si lo hay.
Como te puedes imaginar, este condicional es el candidato perfecto para combinarlo con los filtros que te mencionaba más arriba.
En este tutorial vas a aprender cómo hacerlo:
Código para comprobar si un tema tiene un fichero theme.json
Para detectar si el tema tiene un fichero theme.json puedes utilizar la función wp_theme_has_theme_json()
.
Este sería un ejemplo sencillo de cómo mostrar si lo tiene o no usando un shortcode.
Añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidades:
Para ver este código y los otros 1957 snippets de esta web,
identifícate o suscríbete aquí.
Este es un simple ejemplo en el que detectas si es el tema tiene un fichero theme.json o no y te lo muestra. Pero esta no es la parte importante.
La idea es utilizar esa información para hacer que la ejecución de un código esté condicionada por el tipo de tema del sitio en cuestión.
La función podría ser algo así:
Para ver este código y los otros 1957 snippets de esta web,
identifícate o suscríbete aquí.
Como puedes observar, primero detectas si hay el tema tiene un fichero theme.json y luego ejecutas un código u otro de forma condicional.
Para adecuar estos ejemplos a tu conveniencia solo tienes que añadir el código que quieres que se ejecute dependiendo del tipo de tema.
Como comentaba al inicio esta función puede ser muy práctica para combinar los filtros:
wp_theme_json_data_default
wp_theme_json_data_blocks
wp_theme_json_data_user
wp_theme_json_data_theme
Si quieres que prepare algún ejemplo solo tienes que decírmelo.
Conclusión
Ahora ya sabes cómo detectar si un tema de WordPress tiene un fichero theme.json (o no) y ejecutar diferentes códigos dependiendo del tipo de tema.
¿Alguna duda? Te leo en los comentarios.
Y si quieres darme una sugerencia para próximos tutoriales, déjamela en el formulario de contacto. Ventajas de ser suscriptor. 😉