# Convert Classic Blocks to Regular Blocks on Open

> Converts old "Classic" content into proper paragraph, heading, list and image blocks as soon as a post is opened in the block editor, then tells you so you can review before saving.

- Type: PHP
- Runs: Admin only
- Category: [Block Editor](https://wpide.com/library/category/gutenberg/)
- Tags: block-editor, classic-editor, migration
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/convert-classic-blocks-on-open/

## Code

```php
add_action( 'enqueue_block_editor_assets', function () {
    $screen = get_current_screen();
    if ( ! $screen || 'post' !== $screen->base ) {
        return;
    }

    wp_register_script( 'wpide-convert-classic', false, array( 'wp-blocks', 'wp-data', 'wp-dom-ready', 'wp-block-editor', 'wp-notices', 'wp-editor' ), '1.0', true );
    wp_enqueue_script( 'wpide-convert-classic' );
    wp_add_inline_script( 'wpide-convert-classic', <<<'JS'
wp.domReady( function () {
    var done = false;
    var unsubscribe = wp.data.subscribe( function () {
        if ( done ) { return; }
        var editor = wp.data.select( 'core/editor' );
        if ( ! editor || ! editor.getCurrentPostId() ) { return; }
        var blocks = wp.data.select( 'core/block-editor' ).getBlocks();
        if ( ! blocks.length ) { return; }
        done = true;
        unsubscribe();

        var count = 0;
        blocks.forEach( function ( block ) {
            if ( block.name !== 'core/freeform' ) { return; }
            var converted = wp.blocks.rawHandler( { HTML: wp.blocks.serialize( block ) } );
            if ( converted.length ) {
                wp.data.dispatch( 'core/block-editor' ).replaceBlocks( block.clientId, converted );
                count++;
            }
        } );

        if ( count ) {
            wp.data.dispatch( 'core/notices' ).createInfoNotice( count + ' classic block(s) converted to blocks. Review the content, then save.', { type: 'snackbar' } );
        }
    } );
} );
JS
    );
} );
```

## Notes

Nothing changes until you save; use Undo or leave without saving to keep the classic block.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Convert Classic Blocks to Regular Blocks on Open" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
