campusboy87
5/24/2018 - 8:41 PM

Добавляет иконку элементам LI в меню WordPress, у которых есть дочерние элементы.

Добавляет иконку элементам LI в меню WordPress, у которых есть дочерние элементы.

<?php
// 1 вариант. Менее надёжен, вдруг класс '"menu-item-has-children" быд удалён через фильтр.
add_filter( 'walker_nav_menu_start_el', 'filter_walker_nav_menu_start_el', 10, 4 );
function filter_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) {
	var_dump( $depth, $item );

	if ( ! empty( $item->classes ) && in_array( 'menu-item-has-children', $item->classes ) ) {
		$item_output = '<span>Иконка</span>' . $item_output;
	}

	return $item_output;
}

// 2 вариант. Более надёжный, но более сложный.
add_filter( 'wp_nav_menu_objects', 'filret_wp_nav_menu_objects', 10, 2 );
function filret_wp_nav_menu_objects( $sorted_menu_items, $args ) {

	foreach ( $sorted_menu_items as & $item ) {
		$item->has_children = in_array( 'menu-item-has-children', $item->classes );
	}

	return $sorted_menu_items;
}

add_filter( 'walker_nav_menu_start_el', 'filter_walker_nav_menu_start_el', 10, 4 );
function filter_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) {
	if ( $item->has_children ) {
		$item_output = '<span>Иконка</span>' . $item_output;
	}

	return $item_output;
}