問題描述

感謝在這裡的一些幫助,我設法新增一個自定義搜尋框到我的主選單… 新增到我的主題的 functions.php

add_filter('wp_nav_menu_items','search_box_function');
  function search_box_function ($nav){
  return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
}

不過,我現在新增了另一個選單來放入頁尾,但搜尋框也被新增到這個。僅如何將搜尋框新增到主選單?

我的註冊選單程式碼是:

register_nav_menus( array(
  'primary' => __( 'Primary Navigation', 'twentyten' ),
  'secondary'=>__('Secondary Menu', 'twentyten' ),

 ) );

.. 和顯示次級選單的程式碼是:

wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'secondary' ) ); 

最佳解決方案

要僅將自定義搜尋框新增到主選單,您可以傳遞 wp_nav_menu_items 過濾器提供的第二個引數,並檢查 theme_location 是否是主要位置

add_filter('wp_nav_menu_items','search_box_function', 10, 2);
function search_box_function( $nav, $args ) {
    if( $args->theme_location == 'primary' )
        return $nav."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";

    return $nav;
}

次佳解決方案

另一種方法是將選單新增到 wp_nav_menu_items 過濾器。

例如,假設您有一個名為 Header 的選單,並且您始終希望此選單 (無論是否連線到主題位置) 以顯示搜尋框。您可以透過將選單塊 (在本例中為 header) 新增到過濾器中。

新的過濾器將如下所示:


add_filter( 'wp_nav_menu_header_items', 'search_box_function' );

注意新的過濾器的 header 部分。這告訴 WordPress 什麼選單來新增功能。

這只是解決您當前問題的一種不同的方法。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。