2016-08-05 74 views
0

我正在将一个搜索框和一个“加入电子邮件列表”按钮添加到wordpress主菜单的顶部。搜索框按预期显示,但电子邮件按钮显示在菜单的UL中 - 我可以在完整菜单中使用定位进行补偿,但当响应式移动菜单出现时,它会完全隐藏按钮。不知道如何正确地将它从UL中取出。使用wp_nav_menu_items更改wordpress菜单项的位置

我发现如果您需要电子邮件按钮作为外部文件,它会出现在UL之外 - 但是这也会导致在“非移动版”的主菜单之前出现“1”。迷惑...

这是我的代码,同时显示字符串方法和require方法(注释掉)。

add_filter('wp_nav_menu_items','add_search_box_to_menu', 10, 2); 
function add_search_box_to_menu($items, $args) { 
    if($args->theme_location == 'main-nav-menu') { 
     $search_form = get_search_form(); 
//  $email_button = require_once('emailbutton.php'); 
     $email_button = '<button id="btn_emaillist">Join Our Email List</button>'; 
     $items = $search_form . $email_button . $items; 
    } 
    return $items; 
} 

你可以看到这住在http://example.wdev05.com/。我如何让按钮出现在UL之外,以便在桌面上都可以看到它们,而且没有任何奇怪的副作用?

+0

事实上,与放在require_once方法,只出现在Chrome中移动布局 - 不能在Firefox,Safari或边缘... – supernaut

回答

0

wp_nav_menu_items将在UL内添加内容。

使用wp_nav_menu滤波器插入内容UL

function _wp_nav_m_filter($nav, $args) { 
    if($args->theme_location == 'main-nav-menu') { 
     $search_form = get_search_form(false); // do not echo the form 
     $search_form .= '<button id="btn_emaillist">Join Our Email List</button>'; 
     return $search_form . $nav; 
    } 
    return $nav; 
} 
add_filter('wp_nav_menu', '_wp_nav_m_filter', 10, 2); 

结账https://core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/nav-menu-template.php#L451

+0

优秀...现在我知道了。谢谢! – supernaut