如何将自定义项添加到特定的WordPress菜单

WordPress菜单非常棒。拖放界面使WordPress主题开发人员和用户都非常容易。在过去,我们向您展示了如何在WordPress中添加自定义菜单以及如何设置自定义菜单的样式。菜单的可视界面限制的一件事是您只能添加链接(页面,类别或自定义链接)。如果要将自定义项添加到WordPress菜单,该怎么办?也许您想在WordPress菜单中添加搜索栏,登录/注销链接,今天的日期或其他任何内容。仅仅因为没有可视化界面,并不意味着它是不可能的。在本文中,我们将向您展示如何利用wp_nav_menu_items钩子将自定义项添加到所有或特定的WordPress菜单。

注意:本教程适用于WordPress主题开发人员,因此您需要了解基本的html / css以及对WordPress主题如何工作的公平理解。

显然,您需要在主题中启用自定义菜单,然后才能继续。

让我们从基础开始。我们需要添加您自己的过滤器wp_nav_menu_items钩。一个例子如下:

  add_filter( "wp_nav_menu_items", "your_custom_menu_item", 10, 2 );  function your_custom_menu_item ( $items, $args ) {      if (is_single() && $args->theme_location == "primary") {          $items .= "<li>Show whatever</li>";      }      return $items;  }  

现在如您所见,您可以将条件语句与参数theme_location一起使用。这使您可以根据需要定位特定菜单位置。如果您不想要条件语句,则不必使用它。只需将其添加到特定菜单位置,反之亦然。

现在您已经看到了一个基本示例,让我们向您展示一些如何工作的具体示例。

将登录/注销链接添加到特定的WordPress菜单

如果您想让您的用户能够登录/退出,那么您可以在自定义菜单中添加链接。下面的代码段会在菜单位置显示适当的用户登录/注销链接:primary。如果需要,您可以更改菜单位置。

  add_filter( "wp_nav_menu_items", "add_loginout_link", 10, 2 );  function add_loginout_link( $items, $args ) {      if (is_user_logged_in() && $args->theme_location == "primary") {          $items .= "<li><a href="". wp_logout_url() ."">Log Out</a></li>";      }      elseif (!is_user_logged_in() && $args->theme_location == "primary") {          $items .= "<li><a href="". site_url("wp-login.php") ."">Log In</a></li>";      }      return $items;  }  

将搜索栏添加到特定菜单

想要在特定菜单中添加搜索栏?好吧,不要再看了。您可以通过粘贴以下代码段来完成此操作:

  add_filter("wp_nav_menu_items","add_search_box_to_menu", 10, 2);  function add_search_box_to_menu( $items, $args ) {      if( $args->theme_location == "primary" )          return $items."<li ><form action="http://example.com/"  method="get"><input type="text" name="s"  placeholder="Search"></form></li>";        return $items;  }

将今天的日期添加到特定的WordPress菜单

下面的代码段会将今天的日期添加到您的WordPress菜单中。如果需要,您可以使用我们今天的日期手册来调整代码。

  add_filter("wp_nav_menu_items","add_todaysdate_in_menu", 10, 2);  function add_todaysdate_in_menu( $items, $args ) {      if( $args->theme_location == "primary")  {    $todaysdate = date("l jS F Y");          $items .=  "<li>" . $todaysdate .  "</li>";    }      return $items;  }  

WordPress菜单非常棒。拖放界面使WordPress主题开发人员和用户都非常容易。在过去,我们向您展示了如何在WordPress中添加自定义菜单以及如何设置自定义菜单的样式。菜单的可视界面限制的一件事是您只能添加链接(页面,类别或自定义链接)。如果要将自定义项添加到WordPress菜单,该怎么办?也许您想在WordPress菜单中添加搜索栏,登录/注销链接,今天的日期或其他任何内容。仅仅因为没有可视化界面,并不意味着它是不可能的。在本文中,我们将向您展示如何利用wp_nav_menu_items钩子将自定义项添加到所有或特定的WordPress菜单。

注意:本教程适用于WordPress主题开发人员,因此您需要了解基本的html / css以及对WordPress主题如何工作的公平理解。

显然,您需要在主题中启用自定义菜单,然后才能继续。

让我们从基础开始。我们需要添加您自己的过滤器wp_nav_menu_items钩。一个例子如下:

  add_filter( "wp_nav_menu_items", "your_custom_menu_item", 10, 2 );  function your_custom_menu_item ( $items, $args ) {      if (is_single() && $args->theme_location == "primary") {          $items .= "<li>Show whatever</li>";      }      return $items;  }  

现在如您所见,您可以将条件语句与参数theme_location一起使用。这使您可以根据需要定位特定菜单位置。如果您不想要条件语句,则不必使用它。只需将其添加到特定菜单位置,反之亦然。

现在您已经看到了一个基本示例,让我们向您展示一些如何工作的具体示例。

将登录/注销链接添加到特定的WordPress菜单

如果您想让您的用户能够登录/退出,那么您可以在自定义菜单中添加链接。下面的代码段会在菜单位置显示适当的用户登录/注销链接:primary。如果需要,您可以更改菜单位置。

  add_filter( "wp_nav_menu_items", "add_loginout_link", 10, 2 );  function add_loginout_link( $items, $args ) {      if (is_user_logged_in() && $args->theme_location == "primary") {          $items .= "<li><a href="". wp_logout_url() ."">Log Out</a></li>";      }      elseif (!is_user_logged_in() && $args->theme_location == "primary") {          $items .= "<li><a href="". site_url("wp-login.php") ."">Log In</a></li>";      }      return $items;  }  

将搜索栏添加到特定菜单

想要在特定菜单中添加搜索栏?好吧,不要再看了。您可以通过粘贴以下代码段来完成此操作:

  add_filter("wp_nav_menu_items","add_search_box_to_menu", 10, 2);  function add_search_box_to_menu( $items, $args ) {      if( $args->theme_location == "primary" )          return $items."<li ><form action="http://example.com/"  method="get"><input type="text" name="s"  placeholder="Search"></form></li>";        return $items;  }

将今天的日期添加到特定的WordPress菜单

下面的代码段会将今天的日期添加到您的WordPress菜单中。如果需要,您可以使用我们今天的日期手册来调整代码。

  add_filter("wp_nav_menu_items","add_todaysdate_in_menu", 10, 2);  function add_todaysdate_in_menu( $items, $args ) {      if( $args->theme_location == "primary")  {    $todaysdate = date("l jS F Y");          $items .=  "<li>" . $todaysdate .  "</li>";    }      return $items;  }  

相关推荐

发表回复

房先生
我们将24小时内回复。
2024-05-22 15:46:28
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
[加我微信]
chaoneo
注:点击复制微信号并打开微信APP,添加好友后进行聊天。
[电话联系]
13585372227
[电子邮件]
chaoneo@163.com
取消

选择聊天工具: