WordPress 6.7 Introduziu uma nova funcionalidade que permite que os plugins aumentem o registo dos seus blocoswp_register_block_metadata_collection()
especialmente para plugins que registam vários tipos de blocos.
Estender os Comportamentos Principais do WordPress aos Plugins
Desde a versão 6.1 do WordPress, o WordPress Core inclui um mecanismo para melhorar o desempenho do carregamento de todos os tipos de blocos incorporados: como parte do processo de compilação, osblock.json
O ficheiro será analisado como um ficheiroblocos-json.php
que devolve todos os seus dados como uma matriz.Melhora significativamente o desempenho, evitando a necessidade de executar muitos sistemas de ficheiros e JSON dispendiosos em cada pedido do WordPressoperação. Para obter informações sobre as alterações originais, consulte o#55005.
No entanto, a forma como este mecanismo é implementado apenas se aplica ao próprio WordPress Core. Até agora, os plugins não conseguiram obter os mesmos benefícios. Especialmente para os plugins que contêm muitos tipos de blocos, isto significa efetivamente uma perda de desempenho. Isso vai mudar no WordPress 6.7.
Coleção de metadados de blocos registados
O plugin agora regista opcionalmente o PHP "lista de itens" que contém todos os metadados para o seu tipo de bloco. Para qualquer tipo de bloco que esteja sendo registrado, o WordPress Core agora verificará se existe um arquivo de manifesto que cubra esse tipo de bloco e, se houver, usará os dados no arquivo de manifesto em vez do arquivoblock.json
Leia e analise diretamente ficheiros de tipo bloco.
Para utilizar esta nova funcionalidade, os programadores de plug-ins têm de utilizar o novowp_register_block_metadata_collection()
que recebe dois argumentos:
$path
Caminho de base onde se encontram os ficheiros de blocos da coleção.$manifesto
Caminho para o ficheiro de manifesto da coleção.
todosblock.json
Os documentos que devem fazer parte da coleção devem estar todos localizados no$path
localizado no seu próprio diretório, correspondendo ao nome do tipo de bloco (sem o espaço de nomes do bloco).
tomar nota deO registo de um conjunto de metadados de blocos não substitui a necessidade de registar tipos de blocos individuais. Continua a ser necessário chamar a funçãoregister_block_type()
talvezregister_block_type_from_metadata()
. A utilização da nova funcionalidade é opcional para melhorar o desempenho, mas recomenda-se vivamente a utilização desta funcionalidade, especialmente para plugins que registam vários tipos de blocos.
Geração automática de listas de recolha de metadados de bloco
Os programadores de plugins são responsáveis pela criação e manutenção dos ficheiros de manifesto que registam para as colecções de metadados do tipo de bloco do plugin. Para simplificar este processo, a comunidade criou oPacote NPMA implementação de um novocomandomanifesto de blocos de construção
Este comando foi lançado como parte da versão 30.3.0.@wordpress/scripts
devewp-scripts construir-blocos-manifesto
O comando aceita dois parâmetros:
-entrada
Diretório onde se encontra o tipo de bloco. O valor por defeito é "build".--saída
Caminho para o ficheiro onde está armazenado o manifesto da coleção de metadados do bloco de construção. A predefinição é "build/blocks-manifest.php".
De facto, os parâmetros deste comando são equivalentes aos parâmetros do comandowp_register_block_metadata_collection()
::-entrada
Os parâmetros são equivalentes aos parâmetros$path
(matemática) género--saída
Os parâmetros são equivalentes aos parâmetros$manifesto
.
Exemplo completo
Para este exemplo, suponha que tem uma minha biblioteca de blocos
Plug-ins registados para 3 tipos de blocos:
minha-biblioteca-bloco/preços
minha-biblioteca-bloco/serviços
minha-biblioteca-bloco/testimonial
O código-fonte para estes tipos de blocos está implementado no diretório do pluginsrc
e, mais especificamente, no seguinte catálogo:
src/preços
utilização paraminha-biblioteca-bloco/preços
Blocos.src/serviços
utilização paraminha-biblioteca-bloco/serviços
Blocos.src/testimonial
utilização paraminha-biblioteca-bloco/testimonial
Blocos.
Utilizando os actuaiswp-scripts construir
o código será incorporado no ficheiroconstruir
e cada tipo de bloco tem o mesmo subdiretório.
Depois de executar a compilação, pode utilizar a novawp-scripts construir-blocos-manifesto
comando. Uma vez que o plugin utiliza a localização predefinida do seu tipo de bloco, não é necessário passar quaisquer parâmetros para o comando. Simplesmente execute o comandowp-scripts construir-blocos-manifesto
Iráblock.json
Leia os metadados para os três blocos do catálogoconstruir
e funde-os num ficheirobuild/blocks-manifest.php
Documentação.
O ficheiro de manifesto tem o seguinte aspeto:
array( /* Bloquear metadados. */ ), 'testimonial' => array( /* Bloquear metadados.
'testimonial' => array( /* Bloquear metadados. */ ), 'testimonial' => array( /* Bloquear metadados. */ )
).
No futuro, os mesmos dois comandos podem ser utilizados para efetuar alterações ao tipo de bloco e à sua implementação:
wp-scripts construir
wp-scripts construir-blocos-manifesto
Depois de gerar o ficheiro de manifesto, pode agora registar a coleção de metadados do bloco, como se mostra abaixo:
wp_register_block_metadata_collection(
wp_plugin_dir . '/my-block-library/build',
wp_plugin_dir . '/my-block-library/build/blocks-manifest.php'
);
Um último ponto importante: não se esqueça de registar o tipo de bloco atual:
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/pricing' ).
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/services' ); register_block_type_from_metadata( WP_PLUGIN_DIR .
register_block_type_from_metadata( WP_PLUGIN_DIR . '/my-block-library/build/testimonial' ); register_block_type_from_metadata( WP_PLUGIN_DIR .
resumos
nova funcionalidadewp_register_block_metadata_collection()
e a sua ferramenta de apoio@wordpress/scripts
são uma combinação poderosa para melhorar o desempenho dos tipos de blocos de registo de plugins. Tornam o processo fácil e simples, por isso, se os plug-ins registarem tipos de bloco, considere incorporar esta abordagem no seu fluxo de trabalho de desenvolvimento e na base de código do plug-in.