Добавление классов в меню WP Genesis, исключая другие меню - PullRequest
0 голосов
/ 23 апреля 2020

Мы работаем с темой Genesis для WordPress и хотим добавить несколько классов в меню. Мы провели поиск в Интернете и нашли этот код:

// Add a CSS class to a menu or menu item in WordPress
function modify_nav_menu_args( $args) {
        $args['menu_class'] .= ' genesis-nav-menu js-superfish sf-js-enabled sf-arrows'; 
        return $args;
}
add_filter( 'wp_nav_menu_args', 'modify_nav_menu_args' );

Отлично работает, только проблема в том, что у нас также есть меню в нижнем колонтитуле, и это меню получает эти классы.

Мы не используем «первичное» из «вторичного» меню для загрузки меню, но мы делаем это с помощью виджетов.

Как я могу использовать вышеуказанную функцию и добавить к ней оператор if, чтобы сказать, что я хочу добавить это css в меню с названием «главное меню» и идентификатором «11». Если не «главное меню», или если вы хотите сделать это по идентификатору «11», то добавьте другие классы.

Я уже нашел что-то вроде этого:

function modify_nav_menu_args( $args ) {
 if( 'primary' == $args['theme_location'] ) {
 $args['menu_class'] .= ' special-class';
   }
return $args;
}
add_filter( 'wp_nav_menu_args', 'modify_nav_menu_args' );

Но тогда вы используйте «primary» для theme_location, и мы не используем «primary» или «Secondary».

Кто-нибудь может мне помочь, как я могу сделать это с именем меню или идентификатором?

Var_dump $ args

array(17) { ["menu"]=> object(WP_Term)#21050 (11) { ["term_id"]=> int(11) ["name"]=> string(9) "main menu" ["slug"]=> string(9) "main-menu" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(11) ["taxonomy"]=> string(8) "nav_menu" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["meta"]=> array(0) { } } ["container"]=> string(3) "div" ["container_class"]=> string(0) "" ["container_id"]=> string(0) "" ["menu_class"]=> string(4) "menu" ["menu_id"]=> string(0) "" ["echo"]=> bool(true) ["fallback_cb"]=> string(0) "" ["before"]=> string(0) "" ["after"]=> string(0) "" ["link_before"]=> string(0) "" ["link_after"]=> string(0) "" ["items_wrap"]=> string(36) "
%3$s
" ["item_spacing"]=> string(8) "preserve" ["depth"]=> int(0) ["walker"]=> string(0) "" ["theme_location"]=> string(0) "" }

1 Ответ

1 голос
/ 23 апреля 2020

Переменная $args должна иметь то, что вам нужно.

function modify_nav_menu_args( $args ) {
    if ($args['menu'] instanceof WP_Term && 'main-menu' == $args['menu']->slug) {
        $args['menu_class'] .= ' genesis-nav-menu js-superfish sf-js-enabled sf-arrows';
    }
    return $args;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...