2012-01-18 66 views
1

有没有人有手动输出的Wordpress菜单的工作示例? one on the Codex似乎没有工作,虽然我的menu_name“Foot slu”can can不能那么复杂..?为了便于使用,我需要在外部菜单链接中添加屏外跨度。我已经有了CSS类;我需要的是通过functions.php文件添加的特定标记。WordPress的导航菜单 - 添加条件范围

我要找的基本代码(见列表项w /“外部”类的HREF改为#代码简洁,他们在现实生活联系起来异地):

<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> 
+0

“......添加条件范围” - 您如何确定哪个列表项需要“外部”类? – 2012-01-18 06:45:24

+0

这个类是通过菜单界面添加的......如果它不可见,点击“屏幕选项”。我在一些地方使用它来添加一个外部链接图标 – 2012-01-23 19:55:04

回答

0

答:导航菜单已经被注册分配给主题为食品例如工作&。 DUH!

中的functions.php

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

指定菜单(S)你的主题:

assign a menu to your theme

函数

返回。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'); ?> 

繁荣。

-1

你必须首先在wp-includes/nav-menu-template.php中将函数复制并粘贴到主题的functions.php中,然后更改名称或在functions.php中使用过滤器来更改所选钩子的标记。也可以看一下wp-includes/nav-menu.php。

对不起,我不能提供更多的细节。

+2

请不要告诉别人更改Wordpress的核心代码。这会导致更新问题。任何这样的改变都应该针对主题进行。后者是可能的通过使用functions.php和适当的钩子。有关修改菜单的示例,请参阅2011主题。 – feeela 2012-01-18 10:51:30

+0

你应该给我一个可能的加号,导致净收益为零! :) – 2012-01-18 16:19:41

0

选项1:

假设您已经通过外观创建您的菜单 - >菜单,你可以尝试以下。

  1. 导航到外观 - >菜单
  2. 点击“屏幕选项”(右上)屏幕中,确保“CSS类”被选中。

一旦你完成了上述步骤,每个菜单项都会有一个“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个选项不工作,你必须使用的第3个选项jQuery的。

HTH

enter image description here

+0

我已经有一个CSS类。我需要的是锚链接中的条件标记。我宁愿不用JS来做这件事,否则我不会发布我的问题 – 2012-01-23 19:56:08