在WordPress

时间:2015-10-08 13:13:21

标签: php jquery html css wordpress

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
                $menu_locations = get_nav_menu_locations();

             if ($item->menu_order == 1){
             $item_output = preg_replace('/<a /', '<a class="active" ', $item_output, 1);
            }
                return $item_output;
            }
            add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);

上面的代码将<a class="active">放到第一个菜单项中。 我想把这个课程只用于当前菜单项(所选菜单)。

任何帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

您可以使用wp_nav_menu_objects过滤器来实现此目的。

function my_wp_nav_menu_objects($objects, $args) {
    foreach($objects as $key => $item) {
        $objects[$key]->classes[] = 'my-class';
    }
    return $objects;
}
add_filter('wp_nav_menu_objects', 'my_wp_nav_menu_objects', 10, 2);

唯一的问题是这些类将被添加到li元素而不是直接添加到链接。但它是默认的WordPress行为,我认为你不应该改变它。

如果你真的需要改变它,它仍有可能:

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
    // you can put your if statements in here (use item, depth and args in conditions)
    if ( $depth == 1 ) {
        $item_output = preg_replace('/<a /', '<a class="level-1-menu" ', $item_output, 1);
    } else if ( $depth == 2 )
        $item_output = preg_replace('/<a /', '<a class="level-2-menu" ', $item_output, 1);
    }
    // .. and so on
    return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);

检查enter link description here