diff --git a/src/wp-includes/class-wp-classic-to-block-menu-converter.php b/src/wp-includes/class-wp-classic-to-block-menu-converter.php index 3aeb865302..6430aab6fa 100644 --- a/src/wp-includes/class-wp-classic-to-block-menu-converter.php +++ b/src/wp-includes/class-wp-classic-to-block-menu-converter.php @@ -20,7 +20,9 @@ class WP_Classic_To_Block_Menu_Converter { * @since 6.3.0 * * @param WP_Term $menu The Menu term object of the menu to convert. - * @return string the serialized and normalized parsed blocks. + * @return string|WP_Error The serialized and normalized parsed blocks on success, + * an empty string when there are no menus to convert, + * or WP_Error on invalid menu. */ public static function convert( $menu ) { @@ -34,7 +36,7 @@ class WP_Classic_To_Block_Menu_Converter { $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) ); if ( empty( $menu_items ) ) { - return array(); + return ''; } // Set up the $menu_item variables. diff --git a/src/wp-includes/class-wp-navigation-fallback.php b/src/wp-includes/class-wp-navigation-fallback.php index 70ddf11e4e..fb97c643bb 100644 --- a/src/wp-includes/class-wp-navigation-fallback.php +++ b/src/wp-includes/class-wp-navigation-fallback.php @@ -105,6 +105,10 @@ class WP_Navigation_Fallback { // If there is a classic menu then convert it to blocks. $classic_nav_menu_blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu ); + if ( is_wp_error( $classic_nav_menu_blocks ) ) { + return $classic_nav_menu_blocks; + } + if ( empty( $classic_nav_menu_blocks ) ) { return new WP_Error( 'cannot_convert_classic_menu', __( 'Unable to convert Classic Menu to blocks.' ) ); } diff --git a/tests/phpunit/tests/editor/classic-to-block-menu-converter.php b/tests/phpunit/tests/editor/classic-to-block-menu-converter.php index e3bbce74a7..9ec6c04183 100644 --- a/tests/phpunit/tests/editor/classic-to-block-menu-converter.php +++ b/tests/phpunit/tests/editor/classic-to-block-menu-converter.php @@ -205,16 +205,14 @@ class WP_Classic_To_Block_Menu_Converter_Test extends WP_UnitTestCase { * @ticket 58557 * @covers WP_Classic_To_Block_Menu_Converter::convert */ - public function test_returns_empty_array_for_menus_with_no_items() { + public function test_returns_empty_string_for_menus_with_no_items() { $menu_id = wp_create_nav_menu( 'Empty Menu' ); $classic_nav_menu = wp_get_nav_menu_object( $menu_id ); $blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu ); - $this->assertEmpty( $blocks, 'Result should be empty.' ); - - $this->assertIsArray( $blocks, 'Result should be empty array.' ); + $this->assertSame( '', $blocks, 'Result should be empty string.' ); wp_delete_nav_menu( $menu_id ); }