У меня проблема с предоставлением дочерним элементам только того класса, который я хочу.Предоставление другого элемента для дочерних элементов: wp_nav_menu (walker)
Любой может дать мне несколько советов или любую небольшую помощь по поводу того, что мне нужно написать на моих функциях.php? Вот мой код: sidebar.php:
<?php
wp_nav_menu(array(
'container' => 'div',
'container_class' => 'menu',
'items_wrap' => '%3$s',
'walker' => new ik_walker
));
?>
functions.php:
class ik_walker extends Walker_Nav_Menu{
var $tree_type = array('post_type', 'taxonomy', 'custom');
var $db_fields = array('parent' => 'menu_item_parent', 'id' => 'db_id');
function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output)
{
$id_field = $this->db_fields['id'];
if (is_object($args[0])) {
$args[0]->has_children = ! empty($children_elements[$element->$id_field]);
}
return parent::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
}
function start_lvl(&$output, $depth) {
$output .= "<i class=\"dropdown icon\"></i>\n";
$output .= "<div class=\"menu\">\n";
}
function end_lvl(&$output, $depth) {
$indent = str_repeat("\t", $depth);
$output .= "</div></div>\n";
}
function start_el(&$output, $item, $depth, $args) {
$value = '';
$classes = empty($item->classes) ? array() : (array) $item->classes;
$classes = in_array('current-menu-item', $classes) ? array('current-menu-item') : array();
$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args));
$class_names = strlen(trim($class_names)) > 0 ? ' class="' . esc_attr($class_names) . '"' : '';
$id = apply_filters('nav_menu_item_id', '', $item, $args);
$id = strlen($id) ? ' id="' . esc_attr($id) . '"' : '';
$attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : '';
$attributes .= ! empty($item->target) ? ' target="' . esc_attr($item->target ) .'"' : '';
$attributes .= ! empty($item->xfn) ? ' rel="' . esc_attr($item->xfn ) .'"' : '';
$attributes .= ! empty($item->url) ? ' href="' . esc_attr($item->url ) .'"' : '';
$item_output = $args->before;
if ($args->has_children){
$item_output .= "<div class=\"ui simple dropdown item\">\n";
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
}
else {
$item_output .= "<div class=\"ui simple dropdown item\">\n";
$item_output .= "<a". $attributes . $id . $value . $class_names . ">\n";
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
$item_output .= "\n</a><i class=\"dropdown icon\"></i></div>\n";
}
$item_output .= $args->after;
$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
}
}
Я хочу выход быть похожим на это:
<div class="menu">
<div class="ui simple dropdown item">
CATEGORY WITH SUB-CATEGORIES
<i class="dropdown icon"></i>
<div class="menu">
<div class="item" ><a href="#">Sub Category 1</a></div>
<div class="item" ><a href="#">Sub Category 2</a></div>
<div class="item" ><a href="#">Sub Category 3</a></div>
</div>
</div><!-- /.ui .simple .dropdown .item -->
<div class="ui simple dropdown item">
CATEGORY WITHOUT SUB-CATEGORY
</div>
</div> <!-- /.menu -->
в данный момент меню отображается так (классы ui простой выпадающий элемент выводятся, но я хочу, чтобы они были только: item, также без <i>
предмет.)
<div class="menu">
<div class="ui simple dropdown item">
CATEGORY WITH SUB-CATEGORIES
<i class="dropdown icon"></i>
<div class="menu">
<div class="ui simple dropdown item"><a href="#">Sub Category 1</a><i class="dropdown icon"></i></div>
<div class="ui simple dropdown item"><a href="#">Sub Category 2</a><i class="dropdown icon"></i></div>
<div class="ui simple dropdown item"><a href="#">Sub Category 3</a><i class="dropdown icon"></i></div>
</div>
</div><!-- /.ui .simple .dropdown .item -->
<div class="ui simple dropdown item">
CATEGORY WITHOUT SUB-CATEGORY
</div>
</div> <!-- /.menu -->
Спасибо!