将时事通讯注册元素添加到导航栏

时间:2016-05-24 作者:nickpish

我一直在这里和其他开发/工作包网站上进行研究,以找到将有效的自定义元素添加到导航菜单的最佳解决方案,似乎有很多方法。最后,我想在主导航菜单中添加一个“新闻稿”项,该项可以在菜单中直接包含一个表单字段来收集电子邮件地址,也可以是某种下拉列表,可以在其中输入地址。

一种选择似乎是将Walker类用于wp_nav_menu; 或使用add_last_nav_item 根据建议here. 后一个选项的唯一问题是,我可能更倾向于将此自定义元素添加到导航栏上最后一项之前的位置。最后,我还考虑创建一个自定义小部件并使用plugin 将小部件添加到导航栏。

是否有人建议将此自定义元素添加到nav菜单?非常感谢您的任何建议。

1 个回复
SO网友:Andy Macaulay-Brook

为了回答一个直接的问题,即您可以在哪里连接到导航菜单,这种技术遍布整个web,主要是在导航中添加搜索框。

如果菜单的主题位置为main-nav 然后,这将向菜单列表项添加一个额外的列表项。

add_filter(\'wp_nav_menu_items\', \'add_signup_form\', 10, 2);

function add_signup_form($items, $args) {
    if( $args->theme_location == \'main-nav\' )
    $items .= \'<li><form>Signup form in here</form></li>\';
    return $items;
}
正如我在上面的评论中所说的,我认为这不是非常语义化的HTML,我猜这项技术在web上的流行是因为这个钩子几乎是唯一一个引入导航菜单的钩子。

如果您能够编辑主题文件以放入这个挂钩函数,那么您也可以编辑头文件并放入更有意义的HTML来实现您想要的内容。

你只能使用这个钩子进行附加而不是插入,但我还是觉得在导航中插入一个表单是不可靠的。

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb