From a1e01eb4bc269c437c8760adeb363d193fd2a645 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Thu, 25 Nov 2021 14:34:50 +0000 Subject: [PATCH] Do not render if no fallback can be found for the Nav block (#36849) --- packages/block-library/src/navigation/index.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/block-library/src/navigation/index.php b/packages/block-library/src/navigation/index.php index 6b81550cb68c8..5e58ff198a7a5 100644 --- a/packages/block-library/src/navigation/index.php +++ b/packages/block-library/src/navigation/index.php @@ -189,14 +189,20 @@ function( $block ) { * @return array the array of blocks to be used as a fallback. */ function block_core_navigation_get_fallback_blocks() { - // Default to a list of Pages. - $fallback_blocks = array( + $page_list_fallback = array( array( 'blockName' => 'core/page-list', 'attrs' => array(), ), ); + $registry = WP_Block_Type_Registry::get_instance(); + + // If `core/page-list` is not registered then return empty blocks. + $fallback_blocks = $registry->is_registered( 'core/page-list' ) ? $page_list_fallback : array(); + + // Default to a list of Pages. + $navigation_post = block_core_navigation_get_first_non_empty_navigation(); // Prefer using the first non-empty Navigation as fallback if available. @@ -304,6 +310,11 @@ function render_block_core_navigation( $attributes, $content, $block ) { $fallback_blocks = block_core_navigation_get_fallback_blocks(); + // May be empty if core/navigation or core/page list are not registered. + if ( empty( $fallback_blocks ) ) { + return ''; + } + $inner_blocks = new WP_Block_List( $fallback_blocks, $attributes ); }