Wordpress 在这个 ul 标记内输出我的子菜单...
<ul class="sub-menu">
我怎样才能在它周围包裹一个简单的 div?
最好是通过functions.php来完成,但jquery也可以工作。
Wordpress 在这个 ul 标记内输出我的子菜单...
<ul class="sub-menu">
我怎样才能在它周围包裹一个简单的 div?
最好是通过functions.php来完成,但jquery也可以工作。
虽然使用 jQuery 之类的东西来包装您的子菜单很容易,但为此目的使用 jQuery 并不是一个好习惯。把它放在functions.php中:
class Child_Wrap extends Walker_Nav_Menu
{
function start_lvl(&$output, $depth = 0, $args = array())
{
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<div class=\"custom-sub\"><ul class=\"sub-menu\">\n";
}
function end_lvl(&$output, $depth = 0, $args = array())
{
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul></div>\n";
}
}
我假设您的菜单是在您的标题中生成的,所以转到 header.php(或任何使用 wp_nav_menu 函数的文件)并查找以“wp_nav_menu”开头的任何内容。
由于我没有任何代码可看,我只能猜测它使用的参数(如果有的话)。如果它看起来完全像“wp_nav_menu()”,括号之间没有任何内容,则将其更改为以下内容:
wp_nav_menu(array('walker' => new Child_Wrap()))
否则,请使用您的菜单使用的代码编辑您的问题,以便我可以进一步帮助您。
在函数.php
class Child_Wrap extends Walker_Nav_Menu
{
function start_lvl(&$output, $depth)
{
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<div class=\"sub-menu-wrapper\"><ul class=\"sub-menu\">\n";
}
function end_lvl(&$output, $depth)
{
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul></div>\n";
}
}
调用 wp_nav_menu 所在的函数。(例如:header.php)
$defaults = array( 'container' => 'ul', 'menu_class' => 'scroll', 'menu_id' => 'main-menu-nav' , 'walker' => new Child_Wrap() );
wp_nav_menu( $defaults );
如果您想使用 jquery 执行此操作,您可以按照以下方式执行此操作。但最好的方法是第一种方法。在这里加载页面时有时会显示为混乱的菜单。
jQuery('ul.sub-menu').wrap('<div class="sub-menu-wrapper" />');