当我们在制作wordpress主题时,除了知道wordpress常用的模版函数之外,我们还要知道这些函数要如何用!今天就来讲讲网站栏目的调用函数<?php wp_nav_menu(); ?>的使用方法。
<?php wp_nav_menu(); ?>函数是3.0之后才出的模版函数,这个函数位于wp-includes/nav-menu-templates.php文件中。而我们通过这个函数,可以实现后台自定义菜单的调用。因此这个函数深受很多wordpress主题开发者的喜爱。而我们在使用这个功能之前,先要激活这个功能,因此我们需要再functions.php中加入add_theme_support( 'nav-menus' );或者
-
// 自定义菜单
-
register_nav_menus(
-
array(
-
‘header-menu’ => __( ’导航自定义菜单’ ),
-
‘footer-menu’ => __( ’页角自定义菜单’ )));
简单调用如下:
-
<?php wp_nav_menu($args);?>
调用的menu默认排版为
-
<?php $defaults = array(
-
'theme_location' => ,
-
'menu' => ,
-
'container' => 'div',
-
'container_class' => 'menu-{menu slug}-container',
-
'container_id' => ,
-
'menu_class' => 'menu',
-
'menu_id' => ,
-
'echo' => true,
-
'fallback_cb' => 'wp_page_menu',
-
'before' => ,
-
'after' => ,
-
'link_before' => ,
-
'link_after' => ,
-
'depth' => 0,
-
'walker' => );
-
?>
如果是多菜单的话,如下调用
-
<?php echo wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ) ?>
根据是否登录生成不同该菜单栏
-
<?php
-
if ( is_user_logged_in() ) {
-
wp_nav_menu( array( 'theme_location' => 'logged-in-menu' ) );
-
} else {
-
wp_nav_menu( array( 'theme_location' => 'logged-out-menu' ) );
-
}
-
?>
移除菜单栏
-
<?php
-
function my_wp_nav_menu_args( $args = '' )
-
{
-
$args['container'] = false;
-
return $args;
-
} // function
-
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
-
?>
或者
-
<?php wp_nav_menu( array( 'container' => '' ) ); ?>
wp_nav_menu() 参数详解
theme_location: 调用一个与特定的主题位置相关联的菜单。
menu: 调用指定ID、别名或名称的菜单。
container: 封装该菜单的元素。默认是 div,但是如果你使用HTML 5的话,你也可以改为nav。
container_class: 封装元素的CSS类(指定其显示样式)。
menu_class: 指定无序列表的CSS类,默认是 menu。
fallback_cb: 指定不存在菜单项目时要调用的函数。默认情况下会调用wp_list_pages() 函数(WordPress的静态页面列表)。
before: 要显示在链接文字之前的文字(也是链接的一部分)。
after: 要显示在链接文字之后的文字(也是链接的一部分)。
link_before: 要显示在链接前面的文字(不是链接的一部分)。
link_after: 要显示在链接后面的文字(不是链接的一部分)。
depth: 指定显示菜单的层次深度,这在定义下拉式菜单的比较有用。默认情况是0(所有层次)。
walker: 允许自定义一个walker(巡游?)PHP 类来创建菜单。
echo: 定义是显示该菜单还是仅仅返回数据供PHP程序使用。默认是真,直接显示该菜单。
注意:’theme_location’ => ‘primary’,这句代码调用的是主菜单的意思。所以,要使用上面这句代码,还要在后台设置主菜单(如下图),否则会显示错位或调用页面菜单。我就出现过这样的情况,因为要用多语言插件Polylang来实现网站菜单的多语言,所以必须用到这句代码,搞了半天才弄明白是怎么回事。
资源均来自第三方,谨慎下载,前往第三方网站下载