Editor: Fix error handling of converting classic to block menus.
Fixes the error handling for when `WP_Classic_To_Block_Menu_Converter::convert()` returns an instance of `WP_Error`. `WP_Navigation_Fallback::create_classic_menu_fallback()` now checks for `is_wp_error()` and if `true`, returns the error. And the `@return` type is updated to `string|WP_Error`. Also includes a fix in the return type in `WP_Classic_To_Block_Menu_Converter::convert()` to return an empty string instead of an array instead, i.e. when bailing out for no menu items returned by `wp_get_nav_menu_items()`. The return type is clearly documented as a `string`. Follow-up to [56052]. Props dlh, get_dave, antonvlasenko, hellofromTonya. Fixes #58823. Built from https://develop.svn.wordpress.org/trunk@56422 git-svn-id: http://core.svn.wordpress.org/trunk@55934 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
7ac58a13b4
commit
87aa505a94
|
@ -20,7 +20,9 @@ class WP_Classic_To_Block_Menu_Converter {
|
||||||
* @since 6.3.0
|
* @since 6.3.0
|
||||||
*
|
*
|
||||||
* @param WP_Term $menu The Menu term object of the menu to convert.
|
* @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 ) {
|
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 ) );
|
$menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) );
|
||||||
|
|
||||||
if ( empty( $menu_items ) ) {
|
if ( empty( $menu_items ) ) {
|
||||||
return array();
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up the $menu_item variables.
|
// Set up the $menu_item variables.
|
||||||
|
|
|
@ -105,6 +105,10 @@ class WP_Navigation_Fallback {
|
||||||
// If there is a classic menu then convert it to blocks.
|
// 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 );
|
$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 ) ) {
|
if ( empty( $classic_nav_menu_blocks ) ) {
|
||||||
return new WP_Error( 'cannot_convert_classic_menu', __( 'Unable to convert Classic Menu to blocks.' ) );
|
return new WP_Error( 'cannot_convert_classic_menu', __( 'Unable to convert Classic Menu to blocks.' ) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.4-alpha-56421';
|
$wp_version = '6.4-alpha-56422';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue