web-dev-qa-db-fra.com

Gutenberg - supprimer/ajouter des blocs avec un script personnalisé

Je teste actuellement le nouveau plugin Gutenberg avec mon propre thème et plugin. Mon thème a une méta-boîte personnalisée avec une action pour l'utilisateur. Lorsque l'utilisateur clique sur cette action, le contenu de la publication est complètement supprimé et un nouveau contenu "personnalisé" est ajouté à l'éditeur tinyMce par défaut.

Exemple : tinymce.get ("contenu"). SetContent ("mon contenu personnalisé");

Bien entendu, cela ne fonctionne plus avec le nouvel éditeur Guteberg et j’ai du mal à trouver une solution.

En gros, j’essaie de supprimer tout bloc/contenu de l’éditeur gutenberg et d’ajouter un nouveau bloc (texte) avec mon contenu personnalisé via javascript. Quelqu'un a-t-il un indice pour me diriger dans la bonne direction?

7
Benmay

Il existe probablement un moyen plus simple de procéder, et si ce n’est pas le cas, vous devez ouvrir un problème dans le suivi des problèmes de Gutenberg GH (l’API n’est pas figée dans le marbre).

Puisque l'API n'est pas figée dans le marbre, cette réponse peut s'avérer inutile lorsqu'elle est enfin terminée et fusionnée. Le premier et le meilleur endroit pour poser des questions à GB est sur GitHub

Vous pouvez éliminer tous les blocs en utilisant ceci:

wp.data.dispatch( 'core/editor' ).resetBlocks([]);

Vous pouvez ensuite créer un nouveau bloc par programme:

let block = wp.blocks.createBlock( 'core/paragraph' );

Ajoutez du texte:

block.attributes.content.Push( 'hello world' );

Et insérez-le comme ceci:

wp.data.dispatch( 'core/editor' ).insertBlocks( block );

Lors de l'inspection ultérieure, il existe une méthode plus simple:

let block = wp.blocks.createBlock( 'core/paragraph', { content: 'test' } );
wp.data.dispatch( 'core/editor' ).insertBlocks( block );
9
Tom J Nowell