WordPress как на ладони
WordPress темы и плагины за 250 рублей wordpress jino

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

Позволяет дополнить список HTML тегов, которые можно указать в параметре 'container' при выводе меню функцией wp_nav_menu(). Фильтрует список тегов - контейнеров меню.

Контейнер меню указывается для функции wp_nav_menu() в параметре container:

wp_nav_menu( array(
	'container' => 'div',
) );

По умолчанию можно указать только теги div и nav. Этот фильтр позволяет расширить этот список.

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

add_filter( 'wp_nav_menu_container_allowedtags', 'filter_function_name_9513' );
function filter_function_name_9513( $tags ){
	// filter...

	return $tags;
}
$tags(массив)
Допустимые HTML теги для использования в качестве контейнеров меню.
По умолчанию: используется массив, содержащий 'div' и 'nav'

Примеры

#1 Добавим в выбор допустимых тегов тег section

// Добавляем тег section в набор допустимых тегов для выбора
add_filter( 'wp_nav_menu_container_allowedtags', function ( $allowed_tags ) {
	$allowed_tags[] = 'section';

	return $allowed_tags;
} );

// Выводим меню
wp_nav_menu( [
	'theme_location' => 'mainmenu',
	'container'      => 'section',
] );

Получим:

<section class="menu-mainmenu-container">
	<ul id="menu-mainmenu" class="menu">
		<li id="menu-item-268" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-268">
			<a href="http://wp-test.ru/2018/03/25/post-105/">Запись 1</a>
		</li>
		<li id="menu-item-269" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-269">
			<a href="http://wp-test.ru/2018/03/25/post-104/">Запись 2</a>
		</li>
		<li id="menu-item-270" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-270">
			<a href="http://wp-test.ru/2018/03/25/post-103/">Запись 3</a>
		</li>
	</ul>
</section>

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

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

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

Фрагмент из: wp-includes/nav-menu-template.php VER 4.9.6
...
	if ( ! $menu || is_wp_error( $menu ) )
		return false;

	$nav_menu = $items = '';

	$show_container = false;
	if ( $args->container ) {
		/**
		 * Filters the list of HTML tags that are valid for use as menu containers.
		 *
		 * @since 3.0.0
		 *
		 * @param array $tags The acceptable HTML tags for use as menu containers.
		 *                    Default is array containing 'div' and 'nav'.
		 */
		$allowed_tags = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'nav' ) );
		if ( is_string( $args->container ) && in_array( $args->container, $allowed_tags ) ) {
			$show_container = true;
			$class = $args->container_class ? ' class="' . esc_attr( $args->container_class ) . '"' : ' class="menu-'. $menu->slug .'-container"';
			$id = $args->container_id ? ' id="' . esc_attr( $args->container_id ) . '"' : '';
			$nav_menu .= '<'. $args->container . $id . $class . '>';
		}
	}

	// Set up the $menu_item variables
	_wp_menu_item_classes_by_context( $menu_items );

	$sorted_menu_items = $menu_items_with_children = array();
	foreach ( (array) $menu_items as $menu_item ) {
		$sorted_menu_items[ $menu_item->menu_order ] = $menu_item;
		if ( $menu_item->menu_item_parent )
...
campusboy 2799youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своими опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться