FSE Block Patterns and Synchronized Patterns in WordPress

Full Site Editing (FSE) block patterns let you define reusable layouts that editors can insert from the block inserter. Synchronized patterns (previously “reusable blocks”) update everywhere they’re used when edited once — making them the equivalent of ACF flexible content for the block editor.

Problem: A WordPress Full Site Editing theme uses custom block patterns for marketing sections, but each page that uses the pattern stores its own copy — updating the pattern's design requires finding and editing every page individually.

Solution: Use Synced Block Patterns (formerly "reusable blocks") — create the pattern in the block editor under Patterns → My patterns, then insert it where needed. All instances are linked to the same source: editing one updates all. For programmatic patterns, register them with register_block_pattern() and mark them as 'inserter' => true.

The examples below register a block pattern in PHP with a templateTypes restriction, create a synchronized pattern programmatically, and show how to use pattern categories to organise the inserter.

 __( 'My Plugin Sections', 'myplugin' ) ]
    );

    // Register a pattern — content comes from a separate PHP file
    register_block_pattern(
        'myplugin/hero-section',
        [
            'title'         => __( 'Hero Section with CTA', 'myplugin' ),
            'description'   => __( 'Full-width hero with headline, subtext, and a call-to-action button.', 'myplugin' ),
            'categories'    => [ 'myplugin-sections', 'featured' ],
            'templateTypes' => [ 'front-page', 'page' ], // only show in these template types
            'content'       => myplugin_get_pattern_content( 'hero-section' ),
        ]
    );
} );

function myplugin_get_pattern_content( string $name ): string {
    $file = get_template_directory() . "/patterns/{$name}.php";
    if ( ! file_exists( $file ) ) return '';
    ob_start();
    include $file;
    return ob_get_clean();
}

The pattern file patterns/hero-section.php (or use the patterns/ auto-register folder in WordPress 6.0+):



Welcome to Our Site

Your compelling subheadline goes here.

NOTE: For synchronized patterns (update everywhere at once), create them via the WordPress admin under Appearance → Editor → Patterns → Create pattern, then enable "Synced". Programmatically, synced patterns are wp_block post type entries — query them with get_posts(['post_type' => 'wp_block']) and reference them in templates with <!-- wp:block {"ref":POST_ID} /-->.

Leave Comment

Your email address will not be published. Required fields are marked *