WordPress как на ладони
WordPress Meetup #4. Встречаемся в Москве wordpress jino

wp_nav_menu хук-фильтр . WP 3.0.0

Позволяет изменить HTML код меню навигации перед его выводом на экран.

Примерное содержимое:

<div class="menu-moyo-menyu-container">
	<ul id="menu-moyo-menyu" class="menu">
		<li id="menu-item-265" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-265">
			<a href="http://wp-test.ru/post-99">Обратная связь</a>
		</li>
		<li id="menu-item-266" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-266">
			<a href="http://wp-test.ru/post-98">Все статьи</a>
		</li>
		<li id="menu-item-267" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-267">
			<a href="http://wp-test.ru/post-97">Карта сайта</a>
		</li>
	</ul>
</div>

Использование

add_filter( 'wp_nav_menu', 'filter_function_name_1676', 10, 2 );
function filter_function_name_1676( $nav_menu, $args ){
	// Делаем что-либо...

	return $nav_menu;
}
$nav_menu(строка)
HTML содержимое меню.
$args(stdClass)
Объект с параметрами, переданными функции wp_nav_menu().

Примеры

#1 Обернём все меню специальным контейнером

add_filter( 'wp_nav_menu', 'change_wp_nav_menu', 10, 2 );

function change_wp_nav_menu( $nav_menu, $args ) {
	return '<section class="menu-wrap">' . $nav_menu . '</section>';
}

Где используется хук

wp_nav_menu() остальные хуки:

Код хука-фильтра wp_nav_menu

Фрагмент из: wp-includes/nav-menu-template.php VER 4.9.7
...
	unset( $items );

	if ( $show_container )
		$nav_menu .= '</' . $args->container . '>';

	/**
	 * Filters the HTML content for navigation menus.
	 *
	 * @since 3.0.0
	 *
	 * @see wp_nav_menu()
	 *
	 * @param string   $nav_menu The HTML content for the navigation menu.
	 * @param stdClass $args     An object containing wp_nav_menu() arguments.
	 */
	$nav_menu = apply_filters( 'wp_nav_menu', $nav_menu, $args );

	if ( $args->echo )
		echo $nav_menu;
	else
		return $nav_menu;
}

/**
 * Add the class property classes for the current context, if applicable.
 *
 * @access private
 * @since 3.0.0
 *
 * @global WP_Query   $wp_query
 * @global WP_Rewrite $wp_rewrite
...
campusboy 2834youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своими опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться