web-dev-qa-db-fra.com

Aidez à annuler l'enregistrement d'un type de bloc de base dans Gutenberg

J'essaie d'annuler l'enregistrement des types de blocs principaux dans WordPress Gutenberg.

J'ai utilisé le code fourni ici: https://github.com/WordPress/gutenberg/blob/master/docs/extensibility/extending-blocks.md#removing-blocks

Mais je ne peux pas le faire fonctionner. J'ai l'impression qu'il peut y avoir une simple étape qui me manque?

  1. J'ai créé un plugin que j'ai activé dans mon thème WP.
  2. Dans mon dossier de plugins [clore-blocks] j'ai créé "clore-blocks.php". Il contient:
/** 
 * Supprimez certains blocs. 
 */
 Function clore_blacklist_blocks () {
 Wp_enqueue_script (
 'Clore- blacklist-blocks ', 
 plugins_url (' blocks.js ', __FILE__), 
 array (' wp-blocks '), 
 filemtime (plugin_dir_path (__FILE__). blocs. js ') // Version: filemtime - Récupère l'heure de modification du fichier. 
); 
} 
 add_action (' enqueue_block_editor_assets ',' clore_blacklist_blocks '); 
  1. Dans blocks.js je n'ai que:
 wp.blocks.unregisterBlockType ('noyau/verset'); 

Je pensais que cela supprimerait le type de bloc "Verse", mais lorsque je vais éditer une page avec l'éditeur Gutenberg, "Verse" est toujours là.

Lorsque je visualise le code source de la page d'édition WP, je constate que mon fichier "blocks.js" est correctement référencé, mais il ne fait tout simplement rien ... ou du moins pas ce que je veux. à faire. Avez-vous une idée de pourquoi?

5
LKD

Tout fonctionne pour moi avec allowed_block_types hook.

Exemple:

add_filter( 'allowed_block_types', 'my_function' );

function my_function( $allowed_block_types ) {

    return array(
        'core/paragraph'
    );

}

Vous pouvez insérer le code ci-dessus dans votre fichier functions.php dans un plugin personnalisé. Il supprime tous les blocs sauf le bloc Paragraphe.

Plus d'exemples ici https://rudrastyh.com/gutenberg/remove-default-blocks.html

4
Misha Rudrastyh

Avait le même problème suite à la suggestion de code dans la documentation Gutenberg.

J'ai résolu ce problème en ajoutant un appel wp.domReady () au code javascript. Alors, comme ça:

wp.domReady( function() {
    wp.blocks.unregisterBlockType( 'core/verse' );
};

Maintenant, le bloc 'Verse' a disparu de l'éditeur de blocs.

Je pense que cela a à voir avec l'ordre de chargement des fichiers javascript dans l'admin. La unregisterBlockType doit être appelée après le chargement de l'éditeur de blocs.

J'espère que cela t'aides!

Merci à PayteR pour cette suggestion et consultez https://wordpress.org/gutenberg/handbook/designers-developers/developers/filters/block-filters/#using-a-blacklist pour plus d'informations.

1
Fat Pixel