Skip to content

Instantly share code, notes, and snippets.

@DavidPeralvarez
Last active September 20, 2022 08:04
Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save DavidPeralvarez/37c8c148f890d946fadb2c25589baf00 to your computer and use it in GitHub Desktop.
Save DavidPeralvarez/37c8c148f890d946fadb2c25589baf00 to your computer and use it in GitHub Desktop.
Gutenberg core blocks list
// Útil para filtros de Gutenberg como "allowed_block_types"
archives
audio
button
categories
code
column
columns
coverImage
embed
file
freeform
gallery
heading
html
image
latestComments
latestPosts
list
more
nextpage
paragraph
preformatted
pullquote
quote
reusableBlock
separator
shortcode
spacer
subhead
table
textColumns
verse
video
<?php
// Filtro para limitar el tipo de bloques que admite un CPT 'libro'.
function scv_allowed_block_types( $allowed_block_types, $post ) {
if ( $post->post_type === 'libro' ) {
return array(
'core/paragraph',
'core/image',
'core/list'
);
}
return $allowed_block_types;
}
add_filter( 'allowed_block_types', 'scv_allowed_block_types', 10, 2 );
@parmarhardip
Copy link

hi, if we want specific some embed blocks so how we can allow?

like
on embed we want youtube, twitter and vimeo block.
so how we can do that?
Thanks

@troychaplin
Copy link

I'm also looking for a way to only allow specific embed blocks, not all...

@amarinediary
Copy link

amarinediary commented Mar 7, 2021

@troychaplin79

I'm also looking for a way to only allow specific embed blocks, not all...

See @ https://developer.wordpress.org/block-editor/developers/filters/block-filters/#hiding-blocks-from-the-inserter

@giorgioriccardi
Copy link

Since WordPress 5.6 changed the Embed blocks to all variations of the core/embed block they are now no longer being allowed individually by using the allowed_block_types() hook in previous versions of WP.

The below solution works for me if the Gutenberg plugin is installed. Otherwise wait for the release of WP 5.7 in the next few days and those filters will be included into core.

Original thread:
https://wordpress.stackexchange.com/questions/379612/how-to-remove-the-core-embed-blocks-in-wordpress-5-6/380977

@boospot
Copy link

boospot commented Mar 9, 2021

To fetch the list of all registered blocks in the JS, we can do something like this:
wp.blocks.getBlockTypes()

you may try this in browser console.

Also, to get a list of blocks for a particular namespace, you may use something like this:

wp.blocks.getBlockTypes().filter((block) => { return block.name.indexOf('core') !== -1});
(This will list all blocks with namespace 'core'

@alinademi
Copy link

alinademi commented Mar 26, 2021

wp.blocks.getBlockTypes()

👍 👏

@kaleidografik
Copy link

Hi all, is there a PHP only way (as per above example) to register only certain variations of the embed block?

@JoshuaDoshua
Copy link

JoshuaDoshua commented Apr 9, 2022

@troychaplin , @parmarhardip , a bit late but for anyone else who stumbles here, i use this way to disable the (absolutely insane) list of core embeds inside an editor enqueued script

add_action('enqueue_block_editor_assets', function() {
  wp_enqueue_script('theme-block-scripts', get_template_directory_uri() . '/editor.js', ['wp-blocks', 'wp-element']);
});
wp.domReady(function() {
  const dumbEmbedTypes = [
      'smugmug',
      'wolfram-cloud',
      ...
  ];

  dumbEmbedTypes.forEach(type => {
    wp.blocks.unregisterBlockVariation('core/embed', type);
  });
});

@MinSomai
Copy link

I had to add more hooks for js file. Allows only the 'youtube' embed.

add_action('enqueue_block_editor_assets', function() {
  wp_enqueue_script('theme-block-scripts-unregister', get_template_directory_uri() . '/assets/js/admin-embed-block-unregister.js', ['wp-blocks', 'wp-element', 'wp-dom-ready', 'wp-edit-post']);
});
document.addEventListener("DOMContentLoaded", function () {
  wp.domReady(function () {
    const allowedEmbedBlocks = ["youtube"];
    const blocks = wp.blocks.getBlockVariations("core/embed");
    blocks?.forEach(function (blockVariation) {
      if (-1 === allowedEmbedBlocks.indexOf(blockVariation.name)) {
        wp.blocks.unregisterBlockVariation("core/embed", blockVariation.name);
      }
    });
  });
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment