Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Wordpress-向父菜单添加箭头_Php_Wordpress_Menu - Fatal编程技术网

PHP/Wordpress-向父菜单添加箭头

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

是否可以在有子菜单的菜单(在Wordpress中)中添加一些类,如“arrow”或span? 似乎你可以通过使用javascript来实现这一点,但我想知道是否有PHP解决方案


在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">&#x25BC;</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: '';
}