PHP/Wordpress-向父菜单添加箭头
是否可以在有子菜单的菜单(在Wordpress中)中添加一些类,如“arrow”或span? 似乎你可以通过使用javascript来实现这一点,但我想知道是否有PHP解决方案PHP/Wordpress-向父菜单添加箭头,php,wordpress,menu,Php,Wordpress,Menu,是否可以在有子菜单的菜单(在Wordpress中)中添加一些类,如“arrow”或span? 似乎你可以通过使用javascript来实现这一点,但我想知道是否有PHP解决方案 在WP 3.0中,我看到活动菜单上有“父”或“祖先”类,但这仅适用于活动菜单,我也需要它用于非活动菜单我不知道有任何本地WordPress支持它,但您可以使用一些jQuery轻松实现 <script type="text/javascript"> $("#menu-id ul li:has(ul)").add
在WP 3.0中,我看到活动菜单上有“父”或“祖先”类,但这仅适用于活动菜单,我也需要它用于非活动菜单我不知道有任何本地WordPress支持它,但您可以使用一些jQuery轻松实现
<script type="text/javascript">
$("#menu-id ul li:has(ul)").addClass("parent");
</script>
$(“#菜单id ul li:has(ul)”).addClass(“父级”);
这个功能真的应该在WordPress核心中无论如何,我查看了您在另一个答案的评论中发送的菜单模板源代码,并找到了一种(相当粗糙)的方法来添加一个关于有子菜单项的类。它基本上将默认walker子类化,以扩展其默认行为。最好将它放在主题的
functions.php
中。代码如下:
<?php
class Arrow_Walker_Nav_Menu extends Walker_Nav_Menu {
function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) {
$id_field = $this->db_fields['id'];
if (!empty($children_elements[$element->$id_field])) {
$element->classes[] = 'arrow'; //enter any classname you like here!
}
Walker_Nav_Menu::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
}
}
?>
希望这对你有用!我只是表面上测试了一下,但似乎有效。如果有添加类失败的边缘情况,请告诉我。如果主菜单有子菜单,将类父级添加到主菜单的简单方法
<script type="text/javascript">
jQuery(document).ready(function($) {
$("ul.sub-menu").parents().addClass('parent');
});
</script>
jQuery(文档).ready(函数($){
$(“ul.sub-menu”).parents().addClass(“parent”);
});
风格是
<style type="text/css">
.main-navigation .parent > a, .main-navigation .parent > a:hover {
background-image: url("images/arrow.png");
background-position: right center;
background-repeat: no-repeat;
}
</style>
.main-navigation.parent>a.main-navigation.parent>a:悬停{
背景图片:url(“images/arrow.png”);
背景位置:右中;
背景重复:无重复;
}
如果您像我一样,想在父菜单项的span中添加一个HTML箭头,请在Donald Harvey的customer walker类中添加这样一行:
$element->title .= '<span class="caret down-caret">▼</span>';
$element->title.=';
您也可以直接将HTML添加到WP admin>menu页面中的菜单标签中,但这不是一个很好的方法
我在这里写了一些关于这个的博客我不知道问题是什么,但我们可以通过
css
在菜单中添加箭头,如下所示:
.menu li > a:after {
color: #fff;
content: ' ▾';
}
.menu li > a:only-child:after {
content: '';
}
只要将它粘贴到css代码中,它就会按预期工作
.nav-menu li > a:after {
color: #888;
content: ' ▾';
}
.nav-menu li > a:hover:after {
color: #444;
content: ' ▾';
}
.nav-menu li > a:only-child:after {
content: '';
}
注意:别忘了设置页面UTF-8是否使用3.0中的菜单生成器?或者您是否使用页面或类别作为导航?请详细说明您是如何获得菜单的,并用您的工作代码进行说明,以便我们能够更好地帮助您。我正在使用内置的自定义菜单,我知道这一点。我想知道是否有一种方法可以用PHP实现这一点。js方法的问题是,在页面加载过程中会出现一个小的“闪烁”,如果菜单项的宽度可变,那么您需要一种方法来修改WP生成的HTML,那么?没有内置的支持,或者你可以定制你的模板?你可以得到整个菜单输出(一个字符串),并在它得到回应之前修改它,但我不知道我可以在那里更改什么。。。菜单模板在这里:我的WordPress博客上有点像这样的东西。它使用XMLToArray函数,找出哪些li项有子菜单,然后向它们添加一个类并将其转换回xml。函数的来源在这里:只有一种情况会失败:当参数中指定了回调函数(fallback_cb)时,即当您没有创建自定义菜单时,wp_nav_menu将从wp_page_menu()函数检索菜单项,它使用了一个不同的助行器,我想是的,wp_page_菜单使用的助行器不允许如此轻松地添加类。我会看一看,看看在接下来的几天里我是否能想出一个解决办法,如果我发现了什么,我会编辑我的答案。
.nav-menu li > a:after {
color: #888;
content: ' ▾';
}
.nav-menu li > a:hover:after {
color: #444;
content: ' ▾';
}
.nav-menu li > a:only-child:after {
content: '';
}