Wordpress导航菜单 - 添加条件跨度

时间:2012-01-18 02:52:07

标签: php wordpress menu accessibility

有没有人手动输出Wordpress菜单的工作示例? one on the Codex似乎不起作用,虽然我的menu_name slug“Footer”不能那么复杂..?我需要在外部菜单链接中添加屏幕外跨度以便于访问。我已经有CSS课程;我需要的是通过functions.php文件添加的特定标记。

我正在寻找的基本代码(请参阅带有'外部'类的列表项。为了简洁起见,Hrefs更改为#,它们在现实生活中链接到异地):

<ul id="menu-footer" class="menu">
    <li class="menu-item">
        <a href="#">About Us</a>
    </li>
    <li class="external menu-item">
        <a title="Link opens in a new window." target="_blank" href="#">Terms &amp; Conditions <span class="offscreen">Opens in a new window</span></a>
    </li>
    <li class="menu-item">
        <a href="#">Comments Policy</a>
    </li>
    <li class="external menu-item">
        <a title="Link opens in a new window." target="_blank" href="#">Privacy Statement<span class="offscreen">Opens in a new window</span></a>
    </li>
    <li class="menu-item">
        <a href="#">Contact Us</a>
    </li>
</ul>

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

选项1:

假设您已使用外观创建菜单 - &gt;菜单,您可以尝试以下方法。

  1. 导航至外观 - &gt;菜单
  2. 点击屏幕的“屏幕选项”(右上角),确保选中“CSS Classes”。
  3. 完成上述步骤后,每个菜单项现在都有一个“CSS Classses”文本框,显示您可以在个别基础上分配CSS类(看看屏幕抓取)。

    选项2:

    您也可以尝试http://codex.wordpress.org/Function_Reference/wp_nav_menu#Adding_Conditional_Classes_to_Menu_Items

    <?php
    add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
    function special_nav_class($classes, $item){
         if(is_single() && $item->title == "Blog"){ //Notice you can change the conditional from is_single() and $item->title
                 $classes[] = "special-class";
         }
         return $classes;
    }
    ?>
    

    选项3:

    如果上述2个选项不起作用,则可以使用jQuery。

    HTH

    enter image description here

答案 2 :(得分:0)

答案:导航菜单必须注册&amp;分配给主题,使Codex示例起作用。 DUH!

在functions.php中:

// default register any navigation menus
register_nav_menus(
    array(
      'footer' => 'Footer Menu',
      'links' => 'Links Menu'
    )
);

为您的主题分配菜单:

assign a menu to your theme

回到functions.php:

function accessibleAnchors($menu_name, $link_after = NULL){
    if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

        $menu_items = wp_get_nav_menu_items($menu->term_id);

        $menu_list = '<ul id="menu-' . $menu_name . '" class="menu">';

        foreach ( (array) $menu_items as $key => $menu_item ) {
            // uncomment next line to see all array values
            // print_r($menu_item);
            $linkText = $menu_item->title;
            $url = $menu_item->url;
            $target = $menu_item->target;
            $titleAttr = $menu_item->attr_title;
            // hard-coding the first & only CSS class here, you could loop through others
            $cssClass = $menu_item->classes[0];

            if($target == '_blank'):
               $titleAttr = " title=\"$titleAttr\"";
               $span = "<span class=\"offscreen\"> Opens in a new window</span>";
            else:
               $span = "";
            endif;

            $menu_list .= '<li class="menu-item '.$cssClass.'"><a href="' . $url . '"'.$titleAttr. '>' . $linkText . $span . $link_after .'</a></li>';
        }
        $menu_list .= '</ul>';
    }
    return $menu_list;
}

现在调用模板中的函数:

<?php echo accessibleAnchors('footer'); ?>

动臂。

答案 3 :(得分:-1)

您必须从wp-includes / nav-menu-template.php开始,将该功能复制并粘贴到主题的functions.php中,并更改名称或使用functions.php中的过滤器更改所选的标记钩子。也可以看看wp-includes / nav-menu.php。

对不起,我无法提供更多细节。