wp_nav_menu_items
法典中没有提到,因此没有关于如何使用它的具体描述。
wp_nav_menu_items
可在第347行中找到
wp包括/导航菜单模板。php
$items = apply_filters( \'wp_nav_menu_items\', $items, $args );
内
wp_nav_menu
.
在codex, 声明如下
显示在外观中创建的导航菜单→ 菜单面板。
这意味着wp_nav_menu_items
仅当存在在“菜单”面板中创建的导航菜单,而不是在默认导航菜单上创建的导航菜单时,才会激发。在我看来,这是一个设计缺陷。wp_nav_menu_items
实际上也应该包含在默认菜单中。这也是我测试过的任何教程中都没有提到的一个方面。
我还测试了另一个过滤器,wp_list_pages
, 这似乎像预期的那样起作用。
不过,您的代码也有问题。当我将其添加到默认导航栏时,我所做的任何搜索都会将我发送到数据库。实际上又是这样。我找不到合适的例子。我最终在一个名为search-box-on-navigation-menu.
<?php
add_filter(\'wp_nav_menu_items\',\'add_search_box\', 10, 2);
function add_search_box($items, $args) {
ob_start();
get_search_form();
$searchform = ob_get_contents();
ob_end_clean();
$items .= \'<li>\' . $searchform . \'</li>\';
return $items;
}
?>
要使此代码在默认导航栏上工作,只需在代码中添加以下行
add_filter(\'wp_list_pages\',\'add_search_box\', 10, 2);
, 所以你的最终代码是
<?php
add_filter(\'wp_list_pages\',\'add_search_box\', 10, 2);
add_filter(\'wp_nav_menu_items\',\'add_search_box\', 10, 2);
function add_search_box($items, $args) {
ob_start();
get_search_form();
$searchform = ob_get_contents();
ob_end_clean();
$items .= \'<li>\' . $searchform . \'</li>\';
return $items;
}
?>
希望这有帮助