我向每个Wordpress菜单项添加了类,但它们未出现在代码中。
我的菜单:
<?php $wp_custom_nav = array(
'theme_location' => 'primary',
'container' => 'nav',
'container_class' => 'nav',
'echo' => false,
'fallback_cb' => false,
'items_wrap' => '%3$s',
'depth' => 0
);
echo strip_tags(wp_nav_menu( $wp_custom_nav ), '<nav><a>');
?>
我的function.php包含
register_nav_menus( array(
'primary' => esc_html__( 'Primary', 'yewtree' ),
) );
我有
<nav>
<a></a>
<a></a>
...
</nav>
,但是没有在Wordpress管理菜单中添加的任何类。为什么会这样?
答案 0 :(得分:0)
wp_nav_menu
默认使用Walker_Nav_Menu
。这是负责打印类的部分:
/**
* Filters the CSS classes applied to a menu item's list item element.
*
* @since 3.0.0
* @since 4.1.0 The `$depth` parameter was added.
*
* @param string[] $classes Array of the CSS classes that are applied to the menu item's `<li>` element.
* @param WP_Post $item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
/**
* Filters the ID applied to a menu item's list item element.
*
* @since 3.0.1
* @since 4.1.0 The `$depth` parameter was added.
*
* @param string $menu_id The ID that is applied to the menu item's `<li>` element.
* @param WP_Post $item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth );
$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '<li' . $id . $class_names . '>';
因此,如您所见,这些类将应用于<li>
标签,而不应用于<a>
标签。
因此已应用它们,但随后...您执行此操作:
echo strip_tags(wp_nav_menu( $wp_custom_nav ), '<nav><a>');
因此,您剥离了<nav>
和<a>
以外的所有标签-从而剥离了<li>
标签(并且类也消失了)。