$items:(字符串) 菜单项目的 HTML 列表内容。
$args:(stdClass) 包含 wp_nav_menu() 的对象。
WordPress 的菜单都是通过后台菜单来添加设置,很多时候需要添加一些功能到菜单,比如搜索,或者购物车,这时我们就可以使用 wp_nav_menu_items 函数向菜单列表中添加一些内容来实现。
$items:(字符串) 菜单项目的 HTML 列表内容。
$args:(stdClass) 包含 wp_nav_menu() 的对象。
假如,我们需要添加一个「登录/我的账户链接」到导航菜单,因为我们要根据用户登录状态判断显示的菜单链接,直接在后台菜单管理页面中添加肯定是无法实现的。通过本文介绍的 Filter,我们可以通过下面的代码实现此功能。
add_filter('wp_nav_menu_items', function ($items, $args)
{
if (is_user_logged_in()) {
$items .= '<li><a href="' . home_url('account') . '">My Account</a></li>';
} else {
$items .= '<li><a href="' . home_url('login') . '">Login</a></li>';
}
return $items;
}, 10, 2);
除了添加菜单项目,我们还可以根据需要,修改菜单项目的 HTML,来输出我们需要的菜单内容。
比如主题设计之初没有把搜索添加进去,如果后期需要在默认的导航菜单中再把搜索功能添加进去,通过以下代码可以在导航菜单列表末尾添加一个搜索图标,鼠标经过或点击再显示搜索表单。添加以下代码到主题的 functions.php 中:
function add_search_to_wp_menu ( $items, $args ) {
if( 'header-menu' === $args -> theme_location ) {
$items .= '<li class="menu-item menu-item-search">';
$items .= '<a class="search_trigger" href="#"><i class="icon-search-1"></i></a>
<section class="salong_search searchHidden"><form method="get" class="menu-search-form" action="' . get_bloginfo('home') . '/"><input class="text_input" type="text" placeholder="'.__("输入关键字…",'salong').'" name="s" id="s" /><input type="submit" class="search_btn" id="searchsubmit" value="'.__("搜索",'salong').'" /></form></section>';
$items .= '</li>';
}
return $items;
}
add_filter('wp_nav_menu_items','add_search_to_wp_menu',10,2);
header-menu 为导航菜单的名称,比如注册菜单的代码为:
register_nav_menu( 'header-menu', __( '导航菜单', 'salong' ) );
所以不要添加“导航菜单”,$items 中可添加任意的代码,所以通过文章中第一段代码可以向菜单列表中添加任意可行的功能。
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!