J'essaie de construire le plus simple des blocs personnalisés de Gutenberg en consultant le manuel https://wordpress.org/gutenberg/handbook/blocks/writing-your-first-block-type/ .
La structure du répertoire est la suivante:
wp-content
plugins
gutenberg-bolierplate-block
block.js
gutenberg-boilerplate-block.php
Contenu de gutenberg-boilerplate-block.php
<?php
function gutenberg_bolierplate_block() {
wp_register_script(
'gutenberg-boilerplate-block-es5',
plugins_url( 'block.js', __FILE__ ),
array( 'wp-blocks', 'wp-element' )
);
register_block_type( 'gutenberg-boilerplate-block/hello-world', array(
'editor_script' => 'gutenberg-boilerplate-block-es5',
) );
}
add_action( 'init', 'gutenberg_bolierplate_block' );
Contenu de block.js
var el = wp.elements.createElement,
registerBlockType = wp.blocks.registerBlockType,
blockStyle = { backgroundColor: '#900', color: '#fff', padding: '20px' };
registerBlockType ( 'gutenberg-boilerplate-block/hello-world', {
title: 'Hello World',
icon: 'universal-access-alt',
category: 'common',
edit: function() {
return el( 'p', { style: blockStyle }, 'Hello editor' );
},
save: function() {
return el( 'p', { style: blockStyle }, 'Hello saved content' );
}
} );
Mais le bloc est n'apparaissant jamais dans la boîte de dialogue d'insertion . J'ai essayé dans différents navigateurs et aussi en effaçant le cache. C'est la première fois que je m'essaye à cela et je ne sais absolument pas ce que je fais mal.
Toute suggestion aiderait grandement!
Vous devriez mettre vos scripts en file d'attente en utilisant l'action enqueue_block_assets
, comme ceci:
add_action('enqueue_block_assets', 'gutenberg_bolierplate_block');
Deuxièmement, vous devez utiliser JSX avec un environnement de développement JavaScript moderne pour écrire facilement vos blocs.
J'ai fabriqué un passe-partout pour mon usage personnel que vous pouvez utiliser: https://github.com/HardeepAsrani/gutenberg-boilerplate
Vous devez simplement exécuter npm install
pour installer les dépendances, puis npm run dev
ou npm run build
pour transpiler le code.
Si vous voulez continuer de cette façon, vous devrez éditer la première ligne de votre code de
var el = wp.elements.createElement,
à
var el = wp.element.createElement,
Comme il utilise un nom de module incorrect.
Le problème est:
var el = wp.element s . createElement
Je vous recommande de vérifier la console souvent pendant le développement de votre bloc. En tant qu'erreur de ce genre, celle-ci apparaît souvent en premier.