pre_wp_nav_menu
Дозволяє змінити виведення функції wp_nav_menu() на ранньому етапі до роботи основного коду функції.
Дозволяє до початку формування меню обірвати виконання функції wp_nav_menu() , або дати їй згенерований html код, який відразу ж буде виведений на екран або повернутий, залежно від параметра $args->echo
.
Використання
add_filter( 'pre_wp_nav_menu', 'wp_kama_pre_wp_nav_menu_filter', 10, 2); /** * Function for `pre_wp_nav_menu` filter-hook. * * @param string|null $output Nav menu output to short-circuit with. * @param stdClass $args An object containing wp_nav_menu() arguments. * * @return string|null */ function wp_kama_pre_wp_nav_menu_filter( $output, $args ){ // Filter... return $output; }
-
$output
(рядок/null) Значення, яке визначає, як поведеться функція wp_nav_menu() далі.
- Якщо
null
– продовжить виконання. - Якщо не null – перерве решту виконання коду і поверне передане значення. Якщо було вказано параметр echo = true , результат буде вивести на екран.
Типово: null
- Якщо
-
$args
(stdClass) -
Об’єкт з параметрами, переданими
wp_nav_menu() і злиті з дефолтними.
Приклади
#1 Вивести інше меню для авторизованих користувачів
Цей приклад передбачає наявність двох областей меню: header-menu
і header-menu-user-logged
. Для неавторизованих користувачів буде виводитись меню, прикріплене до області header-menu , а для авторизованих – прикріплене до області menu-user-logged .
// У header.php wp_nav_menu([ 'theme_location' => 'header-menu', ]); // У functions.php add_action( 'after_setup_theme', 'dev_menu_setup'); function dev_menu_setup() { register_nav_menus([ 'header-menu' => 'Верхнє меню', 'menu-user-logged' => 'Верхнє меню для авторизованих користувачів', ]); } add_filter( 'pre_wp_nav_menu', 'change_pre_wp_nav_menu', 10, 2); function change_pre_wp_nav_menu( $output, $args ) { if ( $args->theme_location === 'header-menu' && is_user_logged_in() ) { wp_nav_menu([ 'theme_location' => 'menu-user-logged', ]); } return $output; }
список змін
З версії 3.9.0 | Введено. |
Де викликається хук
pre_wp_nav_menu
Де використовується хук у WordPress
Використання не знайдено.