block_core_latest_posts_migrate_categories()WP 1.0

Handles outdated versions of the core/latest-posts block by converting attribute categories from a numeric string to an array with key id.

This is done to accommodate the changes introduced in #20781 that sought to add support for multiple categories to the block. However, given that this block is dynamic, the usual provisions for block migration are insufficient, as they only act when a block is loaded in the editor.

TODO: Remove when and if the bottom client-side deprecation for this block is removed.

No Hooks.


Array. The migrated block object.


block_core_latest_posts_migrate_categories( $block );
$block(array) (required)
A single parsed block object.

block_core_latest_posts_migrate_categories() code WP 6.5.3

function block_core_latest_posts_migrate_categories( $block ) {
	if (
		'core/latest-posts' === $block['blockName'] &&
		! empty( $block['attrs']['categories'] ) &&
		is_string( $block['attrs']['categories'] )
	) {
		$block['attrs']['categories'] = array(
			array( 'id' => absint( $block['attrs']['categories'] ) ),

	return $block;