Removing selected Gutenberg block from post content in WordPress

There are cases where you want to hide a Gutenberg block from readers. To do it you should add new filter for the_content.

Removing a custom block from content

<?php
add_filter('the_content', 'remove_to_do_from_content', 5);
function remove_to_do_from_content($content){
if (has_block('custom/todo') === false) {
return $content;
}
$parsed = parse_blocks($content);
foreach ($parsed as $index => $block) {
if ($block['blockName'] === 'custom/todo') {
unset($parsed[$index]);
}
}
return serialize_blocks($parsed);
}

Take a look at the third argument. Our filter has to be run before the build-in converter (Gutenberg -> HTML) so we have to set a priority to 5.

We do not have break after first found because we can have more than one todo block

Do you like the content?

Your support helps me continue my work. Please consider making a donation.

Donations are accepted through PayPal or Stripe. You do not need a account to donate. All major credit cards are accepted.

Portrait of the author

About me

A JavaScript specialist with many years of industry experience whose heart beats for Angular. A follower of the "Keep it simple, stupid" principle and a fan of clean code and good architecture. Fearless in the face of the toughest challenges, I always look for simple and effective solutions. As a pragmatist and an enthusiast of new technologies, I passionately follow the trends in the JavaScript world. After hours — a sailor who loves discovering new places and spending time on trips. My favorite motto? "Talk is cheap. Show me the code."

Leave a comment