要在通过菜单后端添加的每个URL的末尾添加自定义哈希,说起来容易做起来难。
你可以建立一个custom walker.
或者你可以试着在walker_nav_menu_start_el
过滤和编辑这些,也许像这样[nav-menu-template.php]:
add_filter( \'walker_nav_menu_start_el\', \'my_skip_to_nav\', 10, 4 );
function my_skip_to_nav( $item_output, $item, $depth, $args ){
$indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';
$class_names = $value = \'\';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = \'menu-item-\' . $item->ID;
$class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item, $args ) );
$class_names = $class_names ? \' class="\' . esc_attr( $class_names ) . \'"\' : \'\';
$id = apply_filters( \'nav_menu_item_id\', \'menu-item-\'. $item->ID, $item, $args );
$id = $id ? \' id="\' . esc_attr( $id ) . \'"\' : \'\';
$output .= $indent . \'<li\' . $id . $value . $class_names .\'>\';
$attributes = ! empty( $item->attr_title ) ? \' title="\' . esc_attr( $item->attr_title ) .\'"\' : \'\';
$attributes .= ! empty( $item->target ) ? \' target="\' . esc_attr( $item->target ) .\'"\' : \'\';
$attributes .= ! empty( $item->xfn ) ? \' rel="\' . esc_attr( $item->xfn ) .\'"\' : \'\';
// Here happens the magic!
$attributes .= ! empty( $item->url ) ? \' href="\' . esc_attr( $item->url ) .\'#navigation"\' : \'\';
$item_output = $args->before;
$item_output .= \'<a\'. $attributes .\'>\';
$item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
$item_output .= \'</a>\';
$item_output .= $args->after;
return $item_output;
}
再说一次,您可能不想要这么复杂的东西,并且可以使用Javascript/jQuery获得更简单的解决方案。
Javascript解决方案使用jQuery将锚添加到导航链接jQuery(document).ready(function($){
$(\'#navigation a\').each(function(){
$(this).attr(\'href\', $(this).attr(\'href\') + \'#navigation\');
});
});