WordPress教程

判断 WordPress 菜单位置是否已分配且不为空

阿里云

WordPress 提供了一个条件函数 has_nav_menu() 来检查特定主题位置是否存在一个菜单。假设我们创建了一个容器,其中包含了一个菜单和一个搜索框。但是,如果没有为该位置定义菜单,我们希望这两个东西都不显示出来。也就是说,让这两样东西要么同时出现,要么都不出现。

当你在某个主题位置调用一个菜单时,可以先检查是否有菜单关联到该位置。注意,下面的例子中我们使用菜单别名而不是名称或者 ID 来进行判断。

也想出现在这里?联系我们
创客主机
  1. <?php if ( has_nav_menu( 'primary-menu' ) ) { ?> 
  2.     <div class="nav-container"> 
  3.         <?php wp_nav_menu( array( 'theme_location' => 'primary-menu' ) ); ?> 
  4.         <?php get_search_form(); ?> 
  5.     </div> 
  6. } ?>

允许更多地菜单容器标签

默认的菜单系统只允许使用 <div> 和 <nav> 作为菜单容器。这能满足大多数需要。但是,如果因为某些原因,你需要使用别的容器来包含菜单,你可以使用下面的代码来实现。

  1. add_filter( 'wp_nav_menu_container_allowedtags', 'my_menu_allowed_tags' ); 
  2. function my_menu_allowed_tags( $tags ) { 
  3.     $tags[] = 'p'; 
  4.     return $tags; 
  5. }

请注意,这里的 <p> 标签仅仅是个例子,实际上一般不会使用这样的标签来包含一个菜单。

如果你需要列出主题中所有的菜单位置,需要使用下面的函数。该函数返回一个包含所有位置的数组。

  1. $locations = get_nav_menu_locations();

检查指定的菜单是否存在

这个函数对主题开发人员可能没什么用,但是迟早还是会用到的。它让你能够通过 ID、名称或别名来检查特定的菜单是否存在。

  1. if ( is_nav_menu( 'menu-slug' ) )
  2.     /* 如果该菜单存在则执行…… */
  3. else
  4.     /* 如果该菜单不存在就执行…… */

扩展应用:

如何在 WordPress 中检查菜单是否已分配可以使用上述代码,如果还想检查它是否被分配并且不是空的,需要使用 wp_nav_menu 并将 echo 参数设置为 false 来检查菜单是否为空,如下所示:

  1. $has_menu_items = wp_nav_menu( array( 'theme_location' => 'main-menu', 'echo' => false )) !== false;
  2.  
  3. // check if menu location is assigned
  4. $is_assigned = has_nav_menu('main-menu');
  5.  
  6. // check for both conditions
  7. if($has_menu_items && $is_assigned) {
  8.   echo 'assigned';
  9. } else {
  10.   echo 'no';
  11. }

判断 WordPress 菜单位置是否已分配且不为空

已有 215 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!