因此,我为菜单创建了自定义标记。菜单的功能是这样构建的。。。
<?php
$parent = array();
if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])){
$menu = wp_get_nav_menu_object($locations[$menu_name]);
$menu_items = wp_get_nav_menu_items($menu->term_id);
$parent_id = 0;
foreach((array)$menu_items as $key => $menu_item){
if($menu_item->menu_item_parent == 0) {
$parent_id = $menu_item->db_id;
$title = $menu_item->title;
$url = $menu_item->url;
$target = $menu_item->target;
$class = $menu_item->classes;
array_push($parent, array("title" => $title, "url" => $url, "target" => $target, "class" => $class));
}
else if($menu_item->menu_item_parent == $parent_id){
$title = $menu_item->title;
$url = $menu_item->url;
$target = $menu_item->target;
$class = $menu_item->classes;
array_push($parent[count($parent) - 1]["child"], array("title" => $title, "url" => $url, "target" => $target, "class" => $class));
}
else{}
}
}
实际的标记/输出是这样构建的。。。
foreach ($parent as $key => $value){
if(empty($value["child"])){
echo "<a href=\'" . $value["url"] . "\' target=\'" . $value["target"] . "\' class=\'" . $value["class"] . "\'>" . $value["title"] . "</a>";
}
else
{
}
}
但是,我需要能够访问代码中菜单项的自定义类。现在,使用
$class = $menu_item->classes;
我得到一个类输出,但它很简单
class="Array"
.
有人能帮我找出如何拆分类并将自定义类输出到我的标记中吗?
最合适的回答,由SO网友:Howdy_McGee 整理而成
您得到的是一个数组,因此您需要implode()
他们-theWalker_Nav_Menu 有如下内容:
$class_names = esc_attr( implode( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) ) );
因此,您可以修改foreach,以类似的方式使其内爆
$class = esc_attr( implode( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $menu_item->classes ), $menu_item) ) );
我们仍然希望确保
nav_menu_css_class
在从该挂钩进行修改时应用。