搬码资源网广告位搬码资源网广告位

wordpress 调用自定义菜单/子菜单

上面是搬码源码网 abnma.com 经由过程收集网络收拾整顿的代码片断。搬码源码网小编此刻分享给各人,也给各人做个参考。

在 wordpress 3.0 中,你将会在治理节制面板的 Appearance(外不雅) 菜单下见到一个被称为 Menus 的菜单体系。下图铺示了该页面的 4 个重要元素。每个菜单条款都有它本身的配置选项。添加了条款之后,你就可以关上它,对其属性(这些属性在 WordPress 3.1 中举行了调解,请参考前面的留言)举行编纂。那么要将某个特定的菜单添加到主题中的某个位置,需求将该菜单挂号出来。不然,咱们就不晓得哪个菜单应该在哪个位置上呈现。该函数有两种应用体式格局(留意有一个 s 的区别):

register_nav_menu(): 注册一个繁多的菜单元置。

register_nav_menus(): 注册多个菜单元置。

鄙人面的例子中,咱们将在主题的 functions.php 函数中注册一个称为 Primary Menu 的菜单

add_action( 'init','register_my_menu' );

function register_my_menu() {

register_nav_menu( 'primary-menu',__( 'Primary Menu' ) );

}

此中 “primary-menu” 是咱们在代码顶用于标识该菜单的别号。“Primary Menu” 是咱们在节制面板顶用于标识该菜单的标签。固然,咱们也可以哄骗近似的体式格局注册多个菜单。

add_action( 'init','register_my_menus' );

function register_my_menus() {

register_nav_menus(

array(

'primary-menu' => __( 'Primary Menu' ),

'secondary-menu' => __( 'Secondary Menu' ),

'tertiary-menu' => __( 'Tertiary Menu' )

)

);

}

年夜大都主题城市在 header.php 模板中挪用一个导航栏,可是 MENUS 可以或许放在主题的任何位置。挪用自界说导航菜单的最简朴情势为:

<?php wp_nav_menu(); ?>

该语句将会加载用户创立的菜单或许假如导航菜单不存在的话就挪用一个尺度的页面列表。咱们可能想对这个挪用举行更多的节制。假如畴前面提到的 Primary Menu 来挪用一个导航菜单,可以这么做:

<?php

wp_nav_menu( array(

'theme_location' => '',//导航别号

'menu' => '',//希冀显示的菜单

'container' => 'div',//容器标签

'container_class' => '',//ul父节点class值

'container_id' => '',//ul父节点id值

'menu_class' => 'menu',//ul节点class值

'menu_id' => '',//ul节点id值

'echo' => true,//是否输入菜单,默许为真

'fallback_cb' => 'wp_page_menu',//菜单不存在时,返归默许菜单,设为false则不返归

'before' => '',//链接前文本

'after' => '',//链接后文本

'link_before' => '',//链接文本前

'link_after' => '',//链接文本后

'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',//怎样包装列表

'depth' => 0,//菜单深度,默许0

'walker' => '' //自界说walker

) );

?>

固然,不止是文本,也可以输入 html 标签,以是矫捷应用这四个参数,可以打造出别具一格的导航菜单。可是这种菜单的输入都是 WordPress 格局化的,有些时辰咱们开发主题的时辰需求完全自界说菜单的输入那么就需求用到一下要领,好比我需求天生的 html:

<ul class="main-nav">

<li class="item">

<a href="http://example.com/?p=123" class="title">Title</a>

<a href="http://example.com/?p=123" class="desc">Description</a>

<ul class="sub-menu">

<li class="item">

<a href="http://example.com/?p=123" class="title">Title</a>

<a href="http://example.com/?p=123" class="desc">Description</a>

</li>

</ul>

</li>

<li class="item">

<a href="http://example.com/?p=123" class="title">Title</a>

<a href="http://example.com/?p=123" class="desc">Description</a>

</li>

</ul>

我今朝应用 wp_get_nav_menu_items 从我的菜单中获取一切的名目作为数组。此刻我可以应用上面的代码天生下面的 html 没有子菜单:

<?php

$menu_name = 'main-nav';

$locations = get_nav_menu_locations()

$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

$menuitems = wp_get_nav_menu_items( $menu->term_id,array( 'order' => 'DESC' ) );

foreach ( $menuitems as $item ):

$id = get_post_meta( $item->ID,'_menu_item_object_id',true );

$page = get_page( $id );

$link = get_page_link( $id ); ?>

<li class="item">

<a href="<?php echo $link; ?>" class="title">

<?php echo $page->post_title; ?>

</a>

<a href="<?php echo $link; ?>" class="desc">

<?php echo $page->post_excerpt; ?>

</a>

</li>

<?php endforeach; ?>

//假如有子菜单,向下钻取,假如咱们达到子菜单和菜单的末尾,封闭。完备代码注释,起首将菜单项作为一个立体数组:

<?php

$menu_name = 'main_nav';

$locations = get_nav_menu_locations();

$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

$menuitems = wp_get_nav_menu_items( $menu->term_id,array( 'order' => 'DESC' ) );

?>

//然后在菜单项的数组长进行迭代:

<nav>

<ul class="main-nav">

<?php

$count = 0;

$submenu = false;

foreach( $menuitems as $item ):

// set up title and url

$title = $item->title;

$link = $item->url;

// item does not have a parent so menu_item_parent equals 0 (false)

if ( !$item->menu_item_parent ):

// save this id for later comparison with sub-menu items

$parent_id = $item->ID;

?>

//撰写第一个父名目li:

<li class="item">

<a href="<?php echo $link; ?>" class="title">

<?php echo $title; ?>

</a>

<?php endif; ?>

//查抄此名目的父ID是否与存储的父ID婚配:

<?php if ( $parent_id == $item->menu_item_parent ): ?>

//最先子菜单< ul>并将$ submenu标记设置为true以供稍后参考:

<?php if ( !$submenu ): $submenu = true; ?>

<ul class="sub-menu">

<?php endif; ?>

//编写子菜单项:

<li class="item"><a href="<?php echo $link; ?>" class="title"><?php echo $title; ?></a></li>

//假如下一个名目不具备不异的父ID,而且曾经声了然子菜单,则封闭子菜单ul

<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?>

</ul>

<?php $submenu = false; endif; ?>

<?php endif; ?>

//再次,假如数组中的下一个名目不具备不异的父标识封闭li

<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?>

</li>

<?php $submenu = false; endif; ?>

<?php $count++; endforeach; ?>

</ul>

</nav>

以上是搬码源码网(abnma.com)为你网络收拾整顿的全数代码内容,但愿文章可以或许帮你解决所碰到的步伐开提问题。假如感觉搬码源码网网站内容还不错,接待将搬码源码网网站保举给步伐员挚友。

总结

以上是搬码源码网为你网络收拾整顿的wordpress 挪用自界说菜单/子菜单全数内容,但愿文章可以或许帮你解决wordpress 挪用自界说菜单/子菜单所碰到的步伐开提问题。

假如感觉搬码源码网网站内容还不错,接待将搬码源码网网站保举给步伐员挚友。

0
分享到:
搬码资源网广告位

评论0

请先

为了配合净网行动 , 本站下架所有娱乐源码 , 如有疑问 , 请联系站长qq 43233524
没有账号? 忘记密码?