是否可以在子菜单(在Wordpress中)的菜单中添加某种类,如“箭头”或跨度? 似乎你可以做到这一点是使用JavaScript,但我想知道是否有PHP解决方案...PHP/Wordpress - 向父菜单添加箭头
在WP 3.0中,我看到活动菜单上有他们的“父”或“祖先”类,但这只适用于活动菜单,我也需要它用于非活动菜单
是否可以在子菜单(在Wordpress中)的菜单中添加某种类,如“箭头”或跨度? 似乎你可以做到这一点是使用JavaScript,但我想知道是否有PHP解决方案...PHP/Wordpress - 向父菜单添加箭头
在WP 3.0中,我看到活动菜单上有他们的“父”或“祖先”类,但这只适用于活动菜单,我也需要它用于非活动菜单
这个功能真的应该在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);
}
}
?>
调用它,你需要当你调用在你的主题wp_nav_menu()
添加walker
说法,就像这样:
<?php
wp_nav_menu(array('walker' => new Arrow_Walker_Nav_Menu, [other arguments...]))
?>
希望对你有用!我只是表面上测试过,但它似乎工作。让我知道是否有任何边缘情况下添加类失败。
我不知道任何原生的WordPress支持,但您可以轻松地使用一些jQuery来做到这一点。
<script type="text/javascript">
$("#menu-id ul li:has(ul)").addClass("parent");
</script>
谢谢,我知道这一点。我想知道是否有办法用PHP来做到这一点。 js方法的问题在于,如果菜单项的宽度可变,则在页面加载过程中会出现小的“闪烁” – Alex 2010-08-28 13:26:02
因此,您需要一种方法来修改WP在生成HTML时生成的HTML , 然后?有没有内置的支持,或者你可以自定义模板? – Rup 2010-08-28 13:31:05
以及你可以得到整个菜单输出(一个字符串)并修改它之前它得到回应,但我不知道我可以改变那里... 菜单模板在这里:http://core.trac .wordpress.org/browser/trunk/wp-includes/nav-menu-template.php – Alex 2010-08-28 13:39:22
简单而不起眼的方式来添加类的父主菜单是否有子菜单
而且风格
<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>
如果你和我一样,想添加在您的父菜单项中添加一个HTML箭头,在Donald Harvey的客户助理类中添加一条像这样的线:
$element->title .= '<span class="caret down-caret">▼</span>';
你也可以直接将HTML添加到WP管理>菜单页面中的菜单标签,但这不是一个好办法。
我在博客一点关于这个在这里http://cameronnokes.com/blog/adding-an-icon-to
我不知道是什么问题,但我们可以在菜单中通过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: '';
}
Ps。不要忘记设置页面UTF-8
你在3.0中使用菜单生成器吗?或者您是否使用网页或类别进行导航?请详细说明您如何获取菜单并说明您的工作代码,以便我们能够更好地为您提供帮助。 – kevtrout 2010-08-24 18:24:19
我使用内置的自定义菜单 – Alex 2010-08-24 18:40:31