問題描述

感謝在這裏的一些幫助,我設法添加一個自定義搜索框到我的主菜單… 添加到我的主題的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。