我正在努力学习,但很明显我用PHP吮吸 - 如何添加:
<?php get_search_form(); ?>
到此结尾(作为最后一个列表元素<li>
)???
<?php if(has_nav_menu('primary_navigation')): wp_nav_menu(array( > 'theme_location' => 'primary_navigation' )); endif; ?>
答案 0 :(得分:0)
wp_nav_menu_items
,因此没有关于如何使用它的具体描述。
wp_nav_menu_items
可以在
WP-包括/ NAV-菜单的template.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;
}
?>
希望这个帮助