WordPress3.0菜单功能进阶

发布时间:2020-05-05

wordpress3.0开始已集成菜单管理功能,使得创建和管理(导航)菜单变得轻而易举。现在,创建并显示一个菜单需要的无非就是一行代码( wp_nav_menu ),似乎已经失去“手动”添加我们自己需要的东西空间。 例如,菜单功能默认没有“返回首页”的任何链接,虽然可以很容易地在自定义菜单功能中手动添加一个返回首页的链接,但返回首页链接基本是网站必须的功能,因此,自动添加此功能是很有必要的。有一个更简单的方法,使用wordpress filters.

利用导航菜单“ filters”功能,可以使我们能够加入特定菜单项。

举一反三,经过挖掘研究,将以下三段代码,添加到主题 functions.php 文件中,会实现自动增加一个登录/注销链接、添加一个搜索框和一个返回首页的链接到你的wordpress3.0导航菜单。

一、新增一个登录/注销链接到您的导航菜单

  1. add_filter(‘wp_nav_menu_items’, ‘add_login_logout_link’, 10, 2);
  2. function add_login_logout_link($items, $args) {
  3. ob_start();
  4. wp_loginout(‘index.php’);
  5. $loginoutlink = ob_get_contents();
  6. ob_end_clean();
  7. $items .= ‘<li>’. $loginoutlink .'</li>’;
  8. return $items;
  9. }

说明:

First we add a function add_login_logout_link to the wp_nav_menu_items filter. Then, the ob_start, ob_get_contents and ob_end_clean (lines 4, 6 and 7) functions are “output Buffering” PHP functions that will “intercept” the information that would otherwise be sent to the browser. wp_loginout(‘index.php’); will add the logic and html code to login (if not logged in yet), or logout (if logged in). Since we don’t want to send that code to the browser yet, we “capture” the output (using ob_get_contents) in a variable ($searchform), and finally include that variable as a list item in the menu.
二、为导航菜单自动添加搜索框

  1. add_filter(‘wp_nav_menu_items’,’add_search_box’, 10, 2);
  2. function add_search_box($items, $args) {
  3. ob_start();
  4. get_search_form();
  5. $searchform = ob_get_contents();
  6. ob_end_clean();
  7. $items .= ‘<li>’ . $searchform . ‘</li>’;
  8. return $items;
  9. }

创建自己的搜索模板
add_search_box是利用默认的searchform菜单栏。但是这可能不是理想的布局(也许它包含前文本”搜索:”与“搜索”键),那么你就应该创建一个模板文件searchform.php在你的主题模板目录,加入下面代码: 该 add_search_box 功能是利用默认的searchform模板。 但这未必是理想的布局(也许它包含前面的文本“搜索:”和一个“搜索”按钮),所以你可创建一个自己的searchform.php模板文件 ,放到在你的主题模板目录中,并添加以下代码:

  1. <form method=“get” class=“search-form” id=“search-form” action=“<?php bloginfo( ‘home’ ); ?>/”>
  2. <div class=“formfield”>
  3. <input class=“formInputText” type=“text” name=“s” id=“search-text” value=“Search …” size=“12” maxlength=“16” tabindex=“1” onfocus=“if (this.value == ‘Search …’) {this.value = ”;}” onblur=“if (this.value == ”) {this.value = ‘Search …’;}” />
  4. </div>
  5. </form>

或者,您可以添加表单样式以匹配您的导航风格,例如:

  1. input.formInputText {
  2. margin-top: 7px;
  3. color: #666;
  4. padding: 3px;
  5. background: #ccc;
  6. }
  7. input.formInputText:hover {
  8. cursor: help;
  9. color: 555;
  10. background: #ccc;
  11. }

三、添加一个主页链接到您的导航菜单

  1. add_filter( ‘wp_nav_menu_items’, ‘add_home_link’, 10, 2 );
  2. function add_home_link($items, $args) {
  3. if (is_front_page())
  4. $class = ‘class=“current_page_item”‘;
  5. else
  6. $class = ;
  7. $homeMenuItem =
  8. ‘<li ‘ . $class . ‘>’ .
  9. $args->before .
  10. ‘<a href=“‘ . home_url( ‘/’ ) . ‘” title=“Home”>’ .
  11. $args->link_before . ‘Home’ . $args->link_after .
  12. ‘</a>’ .
  13. $args->after .
  14. ‘</li>’;
  15. $items = $homeMenuItem . $items;
  16. return $items;
  17. }

只在特定的位置添加上述新增项目

新增项目默认将显示在所有自定义菜单中,这可能不是你所想要的,因此需要添加一个条件代码,让上述代码只执行在一个特定的菜单位置。

  1. function add_login_logout_link($items, $args) {
  2. if($args->theme_location == ‘Primary’) {
  3. ob_start();
  4. wp_loginout(‘index.php’);
  5. $loginoutlink = ob_get_contents();
  6. ob_end_clean();
  7. $items .= ‘<li>’. $loginoutlink .'</li>’;
  8. }
  9. return $items;
  10. }

翻译水平有限,有不准确之处,请见谅,上述代码经测试全部有效。

大熊wordpress凭借多年的wordpress企业主题制作经验,坚持以“为用户而生的wordpress主题”为宗旨,累计为2000多家客户提供品质wordpress建站服务,得到了客户的一致好评。我们一直用心对待每一个客户,我们坚信:“善待客户,将会成为终身客户”。大熊wordpress能坚持多年,是因为我们一直诚信。我们明码标价(wordpress做网站需要多少钱),从不忽悠任何客户,我们的报价宗旨:“拒绝暴利,只保留合理的利润”。如果您有网站建设、网站改版、网站维护等方面的需求,请立即咨询右侧在线客服或拨打咨询热线:18324743309,我们会详细为你一一解答你心中的疑难。

相关文章

写给所有做网站的朋友的一封信

写给所有做网站的朋友的一封信

现在就开始执行“1+N”互联网推广和没有开始执行的人,一两天看不出任何区别; 一两个月看来差异也是微乎其微的;但在2-5年的长远时间来看的时候,你的高质量询盘不断增加,你的互联网资产已经建立完成,对手已经很难匹敌,现在你看到这段文字的时候就是最好的开始,现在就是最好的时候,马上开始“1+N”体系的整体互联网推广吧,我们和你一起,开创互联网大未来!

点击查看详情

准备开启WordPress网站建设推广?

我们相信高端漂亮的网站不应该是昂贵的,这就是wordpress对每个人都是免费的原因
wordpress建站免费入门,并提供价格合理的wordpress建站套餐。