WP eLDeR MegaMenu документация v1.0.1 Вся документация Купить плагин
Документация › Шорткоды и код

Хуки: фильтры и действия

Фильтры и действия WordPress, через которые меню меняется кодом: в functions.php дочерней темы или в своём небольшом плагине.

ХукТипНазначение
eldermenu_is_mobileфильтрСчитать ли устройство мобильным. $scenario: disable_on_mobile, disable_on_desktop, disable_submenu_on_mobile, disable_images_mobile, display_retractors или false.
eldermenu_nav_menu_argsфильтрАргументы wp_nav_menu() перед выводом мегаменю.
eldermenu_configuration_idфильтрКакую конфигурацию использовать для этого вывода меню. Можно, например, показать другую конфигурацию на отдельных страницах.
eldermenu_display_itemфильтрПоказывать ли пункт. Верните false, чтобы скрыть.
eldermenu_submenu_typeфильтрТип подменю пункта: mega, flyout, stack…
eldermenu_dynamic_posts_argsфильтрАргументы WP_Query/get_posts() для «Динамических записей».
eldermenu_dynamic_terms_argsфильтрАргументы get_terms() для «Динамических терминов».
eldermenu_dp_titleфильтрЗаголовок записи в «Динамических записях».
eldermenu_dp_subcontentфильтрПодконтент под заголовком динамической записи (для варианта «Пользовательский»).
eldermenu_dt_subcontentфильтрПодконтент динамического термина.
eldermenu_dt_imageфильтрКартинка динамического термина (ID вложения). Например, миниатюра категории товаров из своего метаполя.
eldermenu_dp_after / eldermenu_dt_afterфильтрHTML всех динамических пунктов перед выводом.
eldermenu_dp_custom_taxonomiesфильтрКакие пользовательские таксономии доступны в фильтре «Динамических записей».
eldermenu_item_imageфильтрПодменить HTML картинки пункта (пустая строка — картинка по настройкам).
eldermenu_badge_contentфильтрТекст бейджа. Можно вычислять на лету: количество новых записей, скидку.
eldermenu_anchor_attributesфильтрАтрибуты ссылки пункта (href, class, target, rel, data-атрибуты).
eldermenu_item_attsфильтрАтрибуты элемента li пункта.
eldermenu_row_attsфильтрАтрибуты ряда.
eldermenu_icon_custom_classфильтрКлассы иконки пункта.
eldermenu_item_layouts / eldermenu_item_layout_opsфильтрСписок макетов пункта и их подписи в панели — для своих макетов.
eldermenu_item_layout_piecesфильтрЧасти макета (image, icon, title, description) перед сборкой пункта. Так макеты WooCommerce добавляют цену и бейдж.
eldermenu_menu_titleфильтрНазвание меню для {{menu_title}} и ARIA-меток.
eldermenu_mobile_header / eldermenu_mobile_footerфильтрHTML шапки и подвала мобильной панели.
eldermenu_toggle_class / eldermenu_toggle_html_attsфильтрКлассы и атрибуты кнопки мобильного меню.
eldermenu_custom_stylesфильтрВесь сгенерированный CSS (массив частей) перед выводом в <head>.
eldermenu_json_dataфильтрНастройки, передаваемые скрипту меню (eldermenu_data): контрольная точка, задержки hover intent и др.
eldermenu_opфильтрЛюбое значение настройки при чтении. Позволяет менять настройки кодом без записи в базу.
eldermenu_background_image_sizeфильтрРазмер фоновой картинки подменю (по умолчанию full).
eldermenu_registered_fontsфильтрСписок шрифтов в «Шрифт меню».
eldermenu_register_fontsдействиеМесто для регистрации своих шрифтов функцией eldermenu_register_font().
eldermenu_register_iconsдействиеРегистрация своего набора иконок функцией eldermenu_register_icons( $group, $args ) — он появится в окне выбора иконки.
eldermenu_after_menu_item_saveдействиеПосле сохранения настроек пункта в панели MegaMenu.
Код с хуками удобно держать в плагине вида wp-content/mu-plugins/megamenu-tweaks.php — он не зависит от темы и не пропадёт при её обновлении.

eldermenu_is_mobile

Фильтр. Считать ли устройство мобильным. $scenario: disable_on_mobile, disable_on_desktop, disable_submenu_on_mobile, disable_images_mobile, display_retractors или false.

Аргументы: $is_mobile, $scenario

PHP
<?php
add_filter( 'eldermenu_is_mobile', function ( $is_mobile, $scenario ) {
	// Планшеты считаем компьютерами
	if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && stripos( $_SERVER['HTTP_USER_AGENT'], 'iPad' ) !== false ) {
		return false;
	}
	return $is_mobile;
}, 10, 2 );

eldermenu_nav_menu_args

Фильтр. Аргументы wp_nav_menu() перед выводом мегаменю.

Аргументы: $args, $config_id

eldermenu_configuration_id

Фильтр. Какую конфигурацию использовать для этого вывода меню. Можно, например, показать другую конфигурацию на отдельных страницах.

Аргументы: $config_id, $args

PHP
<?php
add_filter( 'eldermenu_configuration_id', function ( $config_id, $args ) {
	return is_page( 'landing' ) ? 'landing' : $config_id;
}, 10, 2 );

eldermenu_display_item

Фильтр. Показывать ли пункт. Верните false, чтобы скрыть.

Аргументы: $display, $walker, $element, $max_depth, $depth, $args, $item

PHP
<?php
// Пункт с классом only-logged-in виден только вошедшим пользователям
add_filter( 'eldermenu_display_item', function ( $display, $walker, $element ) {
	if ( in_array( 'only-logged-in', (array) $element->classes, true ) && ! is_user_logged_in() ) {
		return false;
	}
	return $display;
}, 10, 3 );

eldermenu_submenu_type

Фильтр. Тип подменю пункта: mega, flyout, stack…

Аргументы: $type, $item, $depth, $args

eldermenu_dynamic_posts_args

Фильтр. Аргументы WP_Query/get_posts() для «Динамических записей».

Аргументы: $query_args, $item_id

PHP
<?php
// Только записи с метаполем featured = 1
add_filter( 'eldermenu_dynamic_posts_args', function ( $args, $item_id ) {
	$args['meta_key']   = 'featured';
	$args['meta_value'] = '1';
	return $args;
}, 10, 2 );

eldermenu_dynamic_terms_args

Фильтр. Аргументы get_terms() для «Динамических терминов».

Аргументы: $term_args, $item_id

eldermenu_dp_title

Фильтр. Заголовок записи в «Динамических записях».

Аргументы: $title, $item_id, $post_id

eldermenu_dp_subcontent

Фильтр. Подконтент под заголовком динамической записи (для варианта «Пользовательский»).

Аргументы: $html, $post, $item_id

PHP
<?php
// У пункта «Динамические записи» выберите «Динамический подконтент: Пользовательский»
add_filter( 'eldermenu_dp_subcontent', function ( $html, $post, $item_id ) {
	if ( function_exists( 'wc_get_product' ) && 'product' === $post->post_type ) {
		$product = wc_get_product( $post->ID );
		return $product ? 'Артикул: ' . esc_html( $product->get_sku() ) : $html;
	}
	return $html;
}, 10, 3 );

eldermenu_dt_subcontent

Фильтр. Подконтент динамического термина.

Аргументы: $html, $term, $item_id

eldermenu_dt_image

Фильтр. Картинка динамического термина (ID вложения). Например, миниатюра категории товаров из своего метаполя.

Аргументы: $image_id, $item_id, $term

eldermenu_dp_after / eldermenu_dt_after

Фильтр. HTML всех динамических пунктов перед выводом.

Аргументы: $html, $item_id, $args

eldermenu_dp_custom_taxonomies

Фильтр. Какие пользовательские таксономии доступны в фильтре «Динамических записей».

Аргументы: $taxonomies

eldermenu_item_image

Фильтр. Подменить HTML картинки пункта (пустая строка — картинка по настройкам).

Аргументы: $html, $menu_item

eldermenu_badge_content

Фильтр. Текст бейджа. Можно вычислять на лету: количество новых записей, скидку.

Аргументы: $content, $item_id, $item

PHP
<?php
// Бейдж «Новое», если в рубрике пункта есть записи моложе 7 дней
add_filter( 'eldermenu_badge_content', function ( $content, $item_id, $item ) {
	if ( 'category' === $item->object ) {
		$fresh = get_posts( array( 'cat' => $item->object_id, 'date_query' => array( array( 'after' => '7 days ago' ) ), 'fields' => 'ids', 'numberposts' => 1 ) );
		if ( $fresh ) {
			return 'Новое';
		}
	}
	return $content;
}, 10, 3 );

eldermenu_anchor_attributes

Фильтр. Атрибуты ссылки пункта (href, class, target, rel, data-атрибуты).

Аргументы: $atts, $type, $item_id, $object, $object_id

PHP
<?php
// Внешние ссылки меню открываются в новой вкладке
add_filter( 'eldermenu_anchor_attributes', function ( $atts ) {
	if ( ! empty( $atts['href'] ) && strpos( $atts['href'], home_url() ) !== 0 && strpos( $atts['href'], 'http' ) === 0 ) {
		$atts['target'] = '_blank';
		$atts['rel']    = 'noopener';
	}
	return $atts;
} );

eldermenu_item_atts

Фильтр. Атрибуты элемента li пункта.

Аргументы: $atts, $item_id, $item, $args, $depth

eldermenu_row_atts

Фильтр. Атрибуты ряда.

Аргументы: $atts, $item_id, $item, $args, $depth

eldermenu_icon_custom_class

Фильтр. Классы иконки пункта.

Аргументы: $icon_classes, $item_id

eldermenu_item_layouts / eldermenu_item_layout_ops

Фильтр. Список макетов пункта и их подписи в панели — для своих макетов.

Аргументы: $layouts / $ops

eldermenu_item_layout_pieces

Фильтр. Части макета (image, icon, title, description) перед сборкой пункта. Так макеты WooCommerce добавляют цену и бейдж.

Аргументы: $pieces, $layout, $post_id, $config_id

eldermenu_menu_title

Фильтр. Название меню для {{menu_title}} и ARIA-меток.

Аргументы: $title, $menu_id, $config_id, $item

eldermenu_mobile_header / eldermenu_mobile_footer

Фильтр. HTML шапки и подвала мобильной панели.

Аргументы: $html, $config_id

PHP
<?php
add_filter( 'eldermenu_mobile_footer', function ( $html, $config_id ) {
	return $html . '<p class="em-mobile-phone"><a href="tel:+70000000000">+7 (000) 000-00-00</a></p>';
}, 10, 2 );

eldermenu_toggle_class / eldermenu_toggle_html_atts

Фильтр. Классы и атрибуты кнопки мобильного меню.

Аргументы: $class, $config_id / $atts, $config_id, $args

eldermenu_custom_styles

Фильтр. Весь сгенерированный CSS (массив частей) перед выводом в <head>.

Аргументы: $styles

eldermenu_json_data

Фильтр. Настройки, передаваемые скрипту меню (eldermenu_data): контрольная точка, задержки hover intent и др.

Аргументы: $data

PHP
<?php
add_filter( 'eldermenu_json_data', function ( $data ) {
	$data['intent_delay'] = 500; // подменю дольше не закрывается
	return $data;
} );

eldermenu_op

Фильтр. Любое значение настройки при чтении. Позволяет менять настройки кодом без записи в базу.

Аргументы: $value, $option, $section

PHP
<?php
// Липкое меню только на главной
add_filter( 'eldermenu_op', function ( $value, $option, $section ) {
	if ( 'sticky' === $option && 'main' === $section && ! is_front_page() ) {
		return 'off';
	}
	return $value;
}, 10, 3 );

eldermenu_background_image_size

Фильтр. Размер фоновой картинки подменю (по умолчанию full).

Аргументы: $size, $attachment_id, $item_id

eldermenu_registered_fonts

Фильтр. Список шрифтов в «Шрифт меню».

Аргументы: $fonts

eldermenu_register_fonts

Действие. Место для регистрации своих шрифтов функцией eldermenu_register_font().

PHP
<?php
add_action( 'eldermenu_register_fonts', function () {
	eldermenu_register_font( 'golos', array(
		'label' => 'Golos Text',
		'stack' => "'Golos Text', sans-serif",
		'css'   => get_stylesheet_directory_uri() . '/fonts/golos/font.css', // @font-face с вашими файлами
	) );
} );

eldermenu_register_icons

Действие. Регистрация своего набора иконок функцией eldermenu_register_icons( $group, $args ) — он появится в окне выбора иконки.

PHP
<?php
add_action( 'eldermenu_register_icons', function () {
	eldermenu_register_icons( 'my-icons', array(
		'title'        => 'Иконки сайта',
		'class_prefix' => 'myicon ',
		'iconmap'      => array(
			'myicon-delivery' => array( 'title' => 'Доставка', 'terms' => 'доставка курьер' ),
			'myicon-gift'     => array( 'title' => 'Подарок', 'terms' => 'подарок акция' ),
		),
	) );
}, 20 );
// CSS самих иконок (.myicon-delivery::before …) подключите в теме.

eldermenu_after_menu_item_save

Действие. После сохранения настроек пункта в панели MegaMenu.

Аргументы: $item_id