How to extract ‘intro’ block from page content, but later strip from page main content

For anyone interested, with the suggestion from @TomJNowell I managed to retry using the render_block filter and simplify the solution to the problem:

Callback function (replacing example_filter_the_page_content() from my initial post):

/**
 * Callback function used to skip intro section block from rendering.
 *
 * To be used as callback for the `render_block` filter.
 */
function example_filter_render_block_intro( $block_content, $block ) {
    if ( is_page() && is_singular() && in_the_loop() && is_main_query() ) {
        if ( 'core/group' === $block['blockName'] && 
            ! empty( $block['attrs']['className'] ) && 
              preg_match( '/\bis-style-intro-section\b/', $block['attrs']['className'] )  ) {
            $block_content="";
        }
    }

    return $block_content;
}

And then calling add_filter after rendering the intro, right before calling the the_content() function to render the page content:

<?php
/**
 * Template part for displaying page content.
 */
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header container">
        <h2 class="entry-title"><?php the_title(); ?></h2>
        <?php example_the_page_intro(); ?>
    </header>
    <div class="entry-content">
        <div class="container">
            <?php

            add_filter( 'render_block', 'example_filter_render_block_intro', 10, 2 );
            the_content();

            ?>
        </div>
    </div><!-- .entry-content -->
</article><!-- #post-<?php the_ID(); ?> -->

This way, the render_block filter has already done its work for the intro section block, and consequently strips the intro section block right before rendering the page content.

deneme bonusu veren sitelerbahis casinomakrobetceltabetpinbahispolobetpolobet girişpinbahis girişmakrobet girişpulibet girişmobilbahis girişkolaybet giriş