Intereting Posts
Создайте короткий код в WordPress, снова Как сложить 7 Баланс нагрузки WordPress Backend и Frontend? После создания настраиваемого типа сообщений URL-адрес для настраиваемых сообщений недействителен. Изображения не отображаются в виде сетки, но отображаются в виде списка Когда WordPress автоматически ставит в очередь jQuery? Почему не отображаются списки проектов для не-админов? Скрыть короткие коды «код» при использовании «редактора» так же, как wordpress, с «gallery» Показывать все данные в таблице базы данных и превращать их в интерактивную таблицу Как продлить один плагин, который я пишу другим, я пишу, используя классы? Как отправить файл по wp_remote_post? Скрыть сообщение, если соответствует текущему месяцу и году Как передать переменную JavaScript в PHP в WordPress-виджет? Электронная почта 'from address' имеет в ней www Функция обратного вызова WordPress Shortcode с плагином заставить wpautop не обматывать теги, а только текст

Как добавить (css) классы только к одному wp_nav_menu ()?

редактировать

Я удалил оригинальный вопрос, так как этот вопрос Q намного превышает 1.000 просмотров, что очень важно для многих людей – показать вам что-то, что работает a) без пользовательского Walker & b). Примечание. Я удалился только в исходное Q, потому что он был довольно нецензурным.

Задание

Добавьте классы css во все пункты навигационного меню внутри определенного навигационного меню, которое было добавлено через (admin UI) Appearance> Menu.

Функция

function wpse4388_navmenu_classes( $items, $menu, $args ) { // prevent crashing the appearance > menu admin UI if ( is_admin() ) return; # >>>> start editing // Nav menu name you entered in the admin-UI > Appearance > Menus (Add menu). $target['name'] = 'Topnav'; // A targeted menu item that needs a special class - add the item number here $target['items'] = array( (int) 6 ); # <<<< stop editing // filter for child themes: "filter_nav_menu_{nav menu name}" // the nav menu name looses all empty spaces and is set to lower // if you want to use the filter, hook your child theme function into 'after_setup_theme' $target = apply_filters( 'filter_nav_menu_'.strtolower( str_replace( " ", "", $target['name'] ), $target ); // Abort if we're not with the named menu if ( $menu->name !== $target['name'] ) return; foreach ( $items as $item ) { // Add the class for each menu item $item->classes = 'classes for all items'; // Append this class if we are in one of the targeted items if ( in_array( (int) $item->menu_order, $target['items'] ) ) $item->classes .= ' only for a single item'; } return $items; } add_filter( 'wp_get_nav_menu_items', 'wpse4388_navmenu_classes', 10, 3 ); 

Было ли это полезно? Не забудьте проголосовать! 🙂

Solutions Collecting From Web of "Как добавить (css) классы только к одному wp_nav_menu ()?"

Я начну с того, что расскажу что-то похожее на Horttcore.

Есть ли причина, по которой вы не можете просто предоставить различный контейнерный элемент для данного меню, он должен обеспечить достаточную специфичность для его уникального стиля.

Хотя, вы можете сделать что-то вроде этого, чтобы условно определить меню args на основе местоположения меню.

 function my_wp_nav_menu_args( $args = '' ) { if( $args['theme_location'] == 'your-specific-location' ) $args = array_merge( array( 'container_class' => 'example', 'menu_class' => 'example2' ), $args ); return $args; } add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' ); 

Выше код основан на примере, указанном на странице codex для wp_nav_menu , и его можно легко расширить, чтобы выполнить любое количество действий.
http://codex.wordpress.org/Function_Reference/wp_nav_menu

Надеюсь, это поможет..

Возможно, я ошибался, но почему бы вам не добавить класс в свою тему? Укажите класс при вызове меню.

 <?php wp_nav_menu( array( 'theme_location' => 'Top Nav', 'menu_class' => 'span-3' ) ); ?> 

У меня была очень похожая проблема. Мне нужно было настроить таргетинг на конкретный wp_nav_menu() и заменить ссылки на класс. Вот мое решение в отношении OP:

 function theme_add_menuclass( $classes, $args ) { if ( $args->theme_location == 'your-menu-location' ) { return preg_replace( '/<li /i', '<li class="your-class"', $classes ); } return $classes; } add_filter( 'wp_nav_menu_items', 'theme_add_menuclass', 10, 2 ); 

Вы можете использовать это, чтобы заменить любую часть в навигационных меню. Надеюсь это поможет.

Чтобы добавить класс CSS в элемент меню, откройте « Внешний вид»> «Меню»> «Параметры экрана» (вверху справа) и убедитесь, что проверены классы CSS . Это позволит вам добавлять классы CSS в каждый пункт меню. Для нескольких имен классов отделяйте каждый элемент пробелом, например:

 my-class-one my-class-two