Intereting Posts
Отображать сообщение, соответствующее точному поисковому запросу Как перейти к объединению выпадающих списков / фильтров? Скрыть содержимое из предварительного просмотра Скрипт для инициализации макета JQuery для WordPress Очень простой геотаргетинг Почему is_page (id) не работает в functions.php? Как выполнить условный скрипт на новом экране customize.php (Theme Customize) get_the_category_list или get_the_tag_list для пользовательских типов сообщений и таксономии? Проблема производительности WordPress. Могу ли я его отлаживать? теги и категории с настраиваемым типом сообщения Получить php var внутри javascript-файла (создание плагина) Получите идентификатор 10 последних страниц, хранящихся в категории WordPress. Показать макеты тем Как изменить функцию родительской темы через дочернюю тему? Исключить конкретные термины из всех запросов, используя posts_where или что-то похожее

Как условно добавить wp_filter

У меня есть фильтр WP, который я создал, который я хочу использовать только для определенных пунктов меню.

Я пытаюсь использовать –

function add_nav_class($output) { $output= preg_replace('/<a/', '<a class="lsbb"', $output, -1); return $output; } function wp_nav_menu_conditionals() { if(!wp_nav_menu('theme_location' => 'footer_menu')) { add_filter('wp_nav_menu', 'add_nav_class'); } } add_action('wp', 'wp_nav_menu_conditionals'); 

Я хочу добавить_filter во все меню, которые не указаны в качестве темы_location footer_menu. Есть ли способ сделать это в WP? Если в меню используется theme_location footer_menu, я хочу, чтобы он НЕ использовал add_filter.

Может ли кто-нибудь сказать мне, как использовать add_nav_class условно?

Solutions Collecting From Web of "Как условно добавить wp_filter"

Изменить – исправлена ​​инструкция if() .

 function add_nav_class( $output ) { $menu_obj = get_term_by( 'slug', 'footer_menu', 'nav_menu' ); // $menu_obj = get_term_by( 'name', 'Footer Menu', 'nav_menu' ); // if the 'slug' version doesn't work, try the 'name' version // Just make sure you're using the correct name if( 'footer_menu' == $menu_obj->name ) ) { return $output; // bail if it's the 'footer_menu' } $output= preg_replace('/<a/', '<a class="lsbb"', $output, -1); return $output; } add_filter('wp_nav_menu', 'add_nav_class'); 

Изменить 2 – заменить get_term() на get_term_by() .

Рекомендации

  • Справка из этого ответа от Чипа Беннета
  • get_term_by()