最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

menus - How to custom output wp_nav_menu()

programmeradmin1浏览0评论

Currently i am using this code to output menu display :

<?php
wp_nav_menu(array(
    'theme_location' => 'songs-category',
    'container' => false, 
    'menu_id' => 'nav',
    'menu_class' => '',
    'items_wrap' => '<ul id="nav"><li class="active"><a href="#" data-slug="4,5,6,7,8,9" class="xyz">All</a></li>%3$s</ul>'
    ));

getting output:

<ul id="nav">
    <li class="active"><a href="/" title="All">All</a></li>
    <li><a href="/">category1</a></li>
    <li><a href="/">category2</a></li>
    <li><a href="/">category3</a></li>
    <li><a href="/">category4</a></li>
    <li><a href="/">category5</a></li>
    <li><a href="/">category6</a></li>
    <li><a href="/">category7</a></li>
    <li><a href="/">category8</a></li>
    <li><a href="/">category9</a></li>
</ul>

but need output like this :

<ul id="nav">
  <li><a href="#" data-slug="4,5,6,7,8,9,10,11,12,13,14,15" class="xyz">All</a></li>     
  <li><a href="#" data-slug="10" class="xyz">category1</a></li>
  <li><a href="#" data-slug="12" class="xyz">category2</a></li>
  <li><a href="#" data-slug="15" class="xyz">category3</a></li>
  <li><a href="#" data-slug="9" class="xyz">category4</a></li>
  <li><a href="#" data-slug="4" class="xyz">category5</a></li>
  <li><a href="#" data-slug="11" class="xyz">category6</a></li>
  <li><a href="#" data-slug="13" class="xyz">category7</a></li>
  <li><a href="#" data-slug="8" class="xyz">category8</a></li>
  <li><a href="#" data-slug="7" class="xyz">category9</a></li>
</ul>

I don't know how to achieve this.

Currently i am using this code to output menu display :

<?php
wp_nav_menu(array(
    'theme_location' => 'songs-category',
    'container' => false, 
    'menu_id' => 'nav',
    'menu_class' => '',
    'items_wrap' => '<ul id="nav"><li class="active"><a href="#" data-slug="4,5,6,7,8,9" class="xyz">All</a></li>%3$s</ul>'
    ));

getting output:

<ul id="nav">
    <li class="active"><a href="http://domain/" title="All">All</a></li>
    <li><a href="http://domain/category/category1/">category1</a></li>
    <li><a href="http://domain/category/category2/">category2</a></li>
    <li><a href="http://domain/category/category3/">category3</a></li>
    <li><a href="http://domain/category/category4/">category4</a></li>
    <li><a href="http://domain/category/category5/">category5</a></li>
    <li><a href="http://domain/category/category6/">category6</a></li>
    <li><a href="http://domain/category/category7/">category7</a></li>
    <li><a href="http://domain/category/category8/">category8</a></li>
    <li><a href="http://domain/category/category9/">category9</a></li>
</ul>

but need output like this :

<ul id="nav">
  <li><a href="#" data-slug="4,5,6,7,8,9,10,11,12,13,14,15" class="xyz">All</a></li>     
  <li><a href="#" data-slug="10" class="xyz">category1</a></li>
  <li><a href="#" data-slug="12" class="xyz">category2</a></li>
  <li><a href="#" data-slug="15" class="xyz">category3</a></li>
  <li><a href="#" data-slug="9" class="xyz">category4</a></li>
  <li><a href="#" data-slug="4" class="xyz">category5</a></li>
  <li><a href="#" data-slug="11" class="xyz">category6</a></li>
  <li><a href="#" data-slug="13" class="xyz">category7</a></li>
  <li><a href="#" data-slug="8" class="xyz">category8</a></li>
  <li><a href="#" data-slug="7" class="xyz">category9</a></li>
</ul>

I don't know how to achieve this.

Share Improve this question edited Mar 1, 2017 at 14:29 Bhavesh 31 bronze badge asked Mar 1, 2017 at 12:25 gul rathodgul rathod 632 silver badges7 bronze badges 1
  • What output do you have now? – Max Yudin Commented Mar 1, 2017 at 12:39
Add a comment  | 

2 Answers 2

Reset to default 3

You will have to use a custom Walker for your menu. Here is the page in the codex that explains it:

https://codex.wordpress/Class_Reference/Walker

and here:

https://developer.wordpress/reference/classes/walker_nav_menu/

Hope that helps.

You can do a walker or you can do a custom output getting only what you need using the nav_menu_items function:

// Get wordpress menu and do a custom output
$getMenu = wp_get_nav_menu_items( 'menu1'); // Where menu1 can be ID, slug or title
foreach($getMenu as $item){
   echo '<li><a href="' . $item->url . '">' . $item->title . '</a></li>';
}
发布评论

评论列表(0)

  1. 暂无评论