函数
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;
}