Como depreciar os blocos do Gutenberg
Um dos problemas mais comuns com a atualização de um tema ou plugin com blocos do Gutenberg é que fazer alterações no código do bloco quebrará todas as postagens existentes usando esse bloco. Felizmente o WordPress oferece uma solução; uma maneira de depreciar blocos. Neste post veremos como fazer isso.
Se você já trabalhou com desenvolvimento de blocos antes, provavelmente está familiarizado com esse erro de bloco quando adiciona um bloco e depois altera a save
função.
Isso acontece porque o WordPress compara o bloco salvo no banco de dados com o código atual na save
função do seu bloco e eles não correspondem. O WordPress não é capaz de corrigir a diferença. Na maioria dos casos, você pode clicar nos três pontos do bloco e escolher “Tentativa de recuperação do bloco". Se as alterações feitas na save
função foram pequenas (por exemplo, uma mudança de classe), o WordPress é capaz de restaurar o bloco. d precisar clicar em “Converter para HTML” e você perderá a edit
funcionalidade do seu bloco. Obviamente não podemos esperar que os usuários do nosso código de bloco encontrem manualmente todos os posts usando este bloco e executem estes passos para cada um.
Portanto, antes de fazer atualizações na save
função, adicionaremos algum código para informar ao WordPress como lidar com o conteúdo antigo que foi salvo com a save
função antiga.
Vamos ao código!
Na verdade é bem simples. Em suma, o que precisamos fazer é; adicione uma deprecated
propriedade à registerBlockType()
chamada de função. Esta propriedade espera uma matriz. Isso significa que você pode descontinuar um bloco várias vezes, fornecendo várias entradas na matriz. Cada depreciação é definida como um objeto que contém a attributes
propriedade completa e a função (antiga) save
.
Em outras palavras, você define uma deprecated
propriedade como um array e então copia seus blocos attributes
e save
funções nele. Você precisará incluir atributos mesmo que não esteja alterando nada neles na atualização. Você não precisa incluir a edit
função na depreciação.
Vamos fazer isso em um exemplo mais prático.
Suponha que nosso código de bloco seja algo assim. A edit
função é excluída, pois não precisamos lidar com ela na depreciação.
Então vamos supor que queremos fazer alterações em ambos os atributos e salvar e evitar quebrar os blocos existentes. Adicionamos a deprecated
propriedade e copiamos o elemento inteiro attributes
e save
como um elemento de matriz nele. Então, somos livres para fazer quaisquer alterações attributes
e/ou save
funcionar.
Com este código compilado, você pode encontrar uma postagem existente usando o código de bloco antigo e não deve obter nenhum código quebrado!
O WordPress descobrirá que o bloco está usando nosso código obsoleto e carregará o conteúdo usando o save
código obsoleto. Depois de fazer alterações no bloco e atualizar a postagem, o bloco será salvo usando a nova save
função.
Depreciação mais avançada e leitura adicional
O exemplo de código acima é a forma mais básica de depreciação. O WordPress suporta mais funcionalidades, como incluir migrate
e supports
até atribuir constantes (pense em números de versão) ao seu código obsoleto. Dê uma olhada na documentação do WordPress sobre depreciação de blocos.