函数
render_block_core_navigation_submenu ( $attributes, $content, $block )
- 参数
-
-
(array)
$attributes
The block attributes.- Required: 是
-
(string)
$content
The saved content.- Required: 是
-
(WP_Block)
$block
The parsed block.- Required: 是
-
(array)
- 返回值
-
- (string) Returns the post content with the legacy widget added.
- 定义位置
-
-
wp-includes/blocks/navigation-submenu.php
, line 132
-
wp-includes/blocks/navigation-submenu.php
- 引入
- –
- 弃用
- –
渲染`core/navigation-submenu`区块。
function render_block_core_navigation_submenu( $attributes, $content, $block ) {
$navigation_link_has_id = isset( $attributes['id'] ) && is_numeric( $attributes['id'] );
$is_post_type = isset( $attributes['kind'] ) && 'post-type' === $attributes['kind'];
$is_post_type = $is_post_type || isset( $attributes['type'] ) && ( 'post' === $attributes['type'] || 'page' === $attributes['type'] );
// Don't render the block's subtree if it is a draft.
if ( $is_post_type && $navigation_link_has_id && 'publish' !== get_post_status( $attributes['id'] ) ) {
return '';
}
// Don't render the block's subtree if it has no label.
if ( empty( $attributes['label'] ) ) {
return '';
}
$colors = block_core_navigation_submenu_build_css_colors( $block->context, $attributes );
$font_sizes = block_core_navigation_submenu_build_css_font_sizes( $block->context );
$classes = array_merge(
$colors['css_classes'],
$font_sizes['css_classes']
);
$style_attribute = ( $colors['inline_styles'] . $font_sizes['inline_styles'] );
$css_classes = trim( implode( ' ', $classes ) );
$has_submenu = count( $block->inner_blocks ) > 0;
$is_active = ! empty( $attributes['id'] ) && ( get_the_ID() === (int) $attributes['id'] );
$show_submenu_indicators = isset( $block->context['showSubmenuIcon'] ) && $block->context['showSubmenuIcon'];
$open_on_click = isset( $block->context['openSubmenusOnClick'] ) && $block->context['openSubmenusOnClick'];
$open_on_hover_and_click = isset( $block->context['openSubmenusOnClick'] ) && ! $block->context['openSubmenusOnClick'] &&
$show_submenu_indicators;
$wrapper_attributes = get_block_wrapper_attributes(
array(
'class' => $css_classes . ' wp-block-navigation-item' . ( $has_submenu ? ' has-child' : '' ) .
( $open_on_click ? ' open-on-click' : '' ) . ( $open_on_hover_and_click ? ' open-on-hover-click' : '' ) .
( $is_active ? ' current-menu-item' : '' ),
'style' => $style_attribute,
)
);
$label = '';
if ( isset( $attributes['label'] ) ) {
$label .= wp_kses_post( $attributes['label'] );
}
$aria_label = sprintf(
/* translators: Accessibility text. %s: Parent page title. */
__( '%s submenu' ),
wp_strip_all_tags( $label )
);
$html = '
// If Submenus open on hover, we render an anchor tag with attributes.
// If submenu icons are set to show, we also render a submenu button, so the submenu can be opened on click.
if ( ! $open_on_click ) {
$item_url = isset( $attributes[‘url’] ) ? $attributes[‘url’] : ”;
// Start appending HTML attributes to anchor tag.
$html .= ” . block_core_navigation_submenu_render_submenu_icon() . ”;
}
} else {
// If menus open on click, we render the parent as a button.
$html .= ‘
// Wrap title with span to isolate it from submenu icon.
$html .= ‘
$html .= $label;
$html .= ‘‘;
$html .= ‘‘;
$html .= ‘‘;
}
if ( $has_submenu ) {
$inner_blocks_html = ”;
foreach ( $block->inner_blocks as $inner_block ) {
$inner_blocks_html .= $inner_block->render();
}
$html .= sprintf(
‘
‘,
$inner_blocks_html
);
}
$html .= ‘
‘;
return $html;
}


