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

On a daily basis, I work as a Front-End Developer with a primary focus on JavaScript. I feel most comfortable with Angular and NestJS, but I’m always eager to venture beyond a single tech stack. I effectively leverage AI tools in my workflow, which allows me to quickly onboard into new technologies and write code in other languages or frameworks whenever needed.

After hours, I bring my passion for tech into the physical world. I run my own homelab, where I experiment with server management and build home automation and monitoring powered by Home Assistant.

Leave a comment