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.
Opens WPIDE on
Code
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 add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.