2013-08-12 46 views
1

我有一個菜單,其中有10個父頁面在Wordpress中。每個父頁面都有很多子頁面(子頁面)。我想在每個菜單項上追加一個數字,以顯示該項目有多少個孩子。在Wordpress中添加孩子的數量到父頁面菜單項

例:

標準菜單:產品|投資組合|存儲|工作

我想要的菜單:產品(49)|投資組合(14)|商店(22)|工作(51)

這表明父頁「產品」有49個孩子。 「投資組合」有14個等等。向這些父頁面添加新的子頁面會自動更新該數字。

我使用wordpress爲您的頁面創建的默認菜單,而不是在外觀下找到的菜單系統。使用二十三個主題。

有人嗎?

安德斯

+0

你用來顯示菜單的功能是什麼? –

+0

我使用標準的TwentyThirteen函數來顯示它 <?php wp_nav_menu(array('theme_location'=>'primary','menu_class'=>'nav-menu')); ?> – user2674339

回答

2

在這種情況下,你可以使用walker。把下面的類在functions.php文件

class themeslug_walker_nav_menu extends Walker_Nav_Menu { 

    // add main/sub classes to li's and links 
    function start_el(&$output, $item, $depth, $args) { 
     global $wp_query; 
     $indent = ($depth > 0 ? str_repeat("\t", $depth) : ''); // code indent 

     // depth dependent classes 
     $depth_classes = array(
      ($depth == 0 ? 'main-menu-item' : 'sub-menu-item'), 
      ($depth >=2 ? 'sub-sub-menu-item' : ''), 
      ($depth % 2 ? 'menu-item-odd' : 'menu-item-even'), 
      'menu-item-depth-' . $depth 
     ); 
     $depth_class_names = esc_attr(implode(' ', $depth_classes)); 

     // passed classes 
     $classes = empty($item->classes) ? array() : (array) $item->classes; 
     $class_names = esc_attr(implode(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item))); 

     // build html 
     $output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="' . $depth_class_names . ' ' . $class_names . '">'; 

     // link attributes 
     $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  ) .'"' : ''; 
     $attributes .= ! empty($item->url)  ? ' href="' . esc_attr($item->url  ) .'"' : ''; 
     $attributes .= ' class="menu-link ' . ($depth > 0 ? 'sub-menu-link' : 'main-menu-link') . '"'; 
     $childs = count(get_pages('child_of='.$item->object_id.'&parent='.$item->object_id)); 
     $item_output = sprintf('%1$s<a%2$s>%3$s%4$s (%5$s) %6$s</a>%7$s', 
      $args->before, 
      $attributes, 
      $args->link_before, 
      apply_filters('the_title', $item->title, $item->ID), 
      $childs, 
      $args->link_after, 
      $args->after 
     ); 

     // build html 
     $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 
    } 
} 

,並在您wp_nav_menu功能

<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_class' => 'nav-menu', 'walker' => new themeslug_walker_nav_menu)); ?>

這就是它添加此步行者。

+0

這似乎「幾乎」爲我工作。每個菜單項都被替換爲以下內容:(121) 該編號與我擁有的頁數或任何內容的數量不相等,因此此代碼中必定存在錯誤。有任何想法嗎? – user2674339

+0

您現在可以嘗試。我剛編輯了代碼。 –

+0

關於此代碼發生的同樣的事情。現在每個菜單項都被替換爲(37),這是我在此刻測試的父頁數。我目前有超過140個子頁面分佈在這37個父頁面中。 – user2674339

相關問題