Cómo dejar obsoletos los bloques de Gutenberg
Uno de los problemas más comunes con la actualización de un tema o complemento con bloques de Gutenberg es que hacer cambios en el código del bloque romperá todas las publicaciones existentes que usan ese bloque. Afortunadamente, WordPress ofrece una solución; una forma de desaprobar los bloques. En este post veremos cómo hacerlo.
Si ha trabajado con el desarrollo de bloques antes, probablemente esté familiarizado con este error de bloque cuando agregó un bloque y luego cambió la save
función.
Esto sucede porque WordPress compara el bloque guardado en la base de datos con el código actual en la save
función de su bloque y no coinciden. WordPress no puede reparar la diferencia. En la mayoría de los casos, puede hacer clic en los tres puntos del bloque y elegir "Intentar recuperación del bloque". Si los cambios realizados en la save
función fueron pequeños (por ejemplo, un cambio de clase), WordPress puede restaurar el bloque. En el peor de los casos, usted Necesito hacer clic en "Convertir a HTML" y perderá la edit
funcionalidad de su bloque. Obviamente, no podemos esperar que los usuarios de nuestro código de bloque encuentren manualmente todas las publicaciones que usan este bloque y realicen estos pasos para cada una.
Entonces, antes de realizar actualizaciones a la save
función, agregaremos un código para decirle a WordPress cómo manejar el contenido antiguo que se guardó con la save
función anterior.
¡Entremos en el código!
En realidad es bastante simple. En resumen lo que tenemos que hacer es; agregue una deprecated
propiedad a la registerBlockType()
llamada de función. Esta propiedad espera una matriz. Eso significa que puede desaprobar un bloque varias veces, proporcionando múltiples entradas en la matriz. Cada depreciación se define como un objeto que contiene la attributes
propiedad completa y la función (antigua) save
.
En otras palabras, define una deprecated
propiedad como una matriz y luego copia su bloque attributes
y save
función en ella. Deberá incluir atributos aunque no cambie nada en ellos en la actualización. No necesita incluir la edit
función en la depreciación.
Veamos esto en un ejemplo más práctico.
Supongamos que nuestro código de bloque se parece a esto. La edit
función se excluye porque no necesitamos tratarla en la depreciación.
Entonces supongamos que queremos hacer cambios en ambos atributos y guardar y evitar romper bloques existentes. Agregamos la deprecated
propiedad y copiamos todo attributes
y save
como un elemento de matriz en ella. Entonces somos libres de hacer cualquier cambio en la función attributes
or/and save
.
Con este código compilado, puede ir a buscar una publicación existente utilizando el código de bloque anterior, ¡y no debería obtener ningún código roto!
WordPress se dará cuenta de que el bloque está usando nuestro código obsoleto y cargará el contenido usando el save
código obsoleto. Una vez que realice cambios en el bloque y actualice la publicación, el bloque se guardará con la nueva save
función.
Depreciación más avanzada y lecturas adicionales
El ejemplo de código anterior es la forma más básica de depreciación. WordPress admite más funciones, como incluir migrate
e supports
incluso asignar constantes (piense en números de versión) a su código obsoleto. Eche un vistazo a la documentación de WordPress sobre la depreciación de bloques.