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
Використання не знайдено.