判断 WordPress 菜单位置是否已分配且不为空
WordPress 提供了一个条件函数 has_nav_menu() 来检查特定主题位置是否存在一个菜单。假设…
WordPress 提供了一个条件函数 has_nav_menu() 来检查特定主题位置是否存在一个菜单。假设我们创建了一个容器,其中包含了一个菜单和一个搜索框。但是,如果没有为该位置定义菜单,我们希望这两个东西都不显示出来。也就是说,让这两样东西要么同时出现,要么都不出现。
当你在某个主题位置调用一个菜单时,可以先检查是否有菜单关联到该位置。注意,下面的例子中我们使用菜单别名而不是名称或者 ID 来进行判断。
-
<?php if ( has_nav_menu( 'primary-menu' ) ) { ?>
-
<div class="nav-container">
-
<?php wp_nav_menu( array( 'theme_location' => 'primary-menu' ) ); ?>
-
<?php get_search_form(); ?>
-
</div>
-
} ?>
允许更多地菜单容器标签
默认的菜单系统只允许使用 <div> 和 <nav> 作为菜单容器。这能满足大多数需要。但是,如果因为某些原因,你需要使用别的容器来包含菜单,你可以使用下面的代码来实现。
-
add_filter( 'wp_nav_menu_container_allowedtags', 'my_menu_allowed_tags' );
-
function my_menu_allowed_tags( $tags ) {
-
$tags[] = 'p';
-
return $tags;
-
}
请注意,这里的 <p> 标签仅仅是个例子,实际上一般不会使用这样的标签来包含一个菜单。
如果你需要列出主题中所有的菜单位置,需要使用下面的函数。该函数返回一个包含所有位置的数组。
-
$locations = get_nav_menu_locations();
检查指定的菜单是否存在
这个函数对主题开发人员可能没什么用,但是迟早还是会用到的。它让你能够通过 ID、名称或别名来检查特定的菜单是否存在。
-
if ( is_nav_menu( 'menu-slug' ) )
-
/* 如果该菜单存在则执行…… */
-
else
-
/* 如果该菜单不存在就执行…… */
扩展应用:
如何在 WordPress 中检查菜单是否已分配可以使用上述代码,如果还想检查它是否被分配并且不是空的,需要使用 wp_nav_menu 并将 echo 参数设置为 false 来检查菜单是否为空,如下所示:
-
$has_menu_items = wp_nav_menu( array( 'theme_location' => 'main-menu', 'echo' => false )) !== false;
-
-
// check if menu location is assigned
-
$is_assigned = has_nav_menu('main-menu');
-
-
// check for both conditions
-
if($has_menu_items && $is_assigned) {
-
echo 'assigned';
-
} else {
-
echo 'no';
-
}
类别:WordPress教程、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!