Как настроить таргетинг на определенные меню WordPress (wp_nav_menu) в функции? - PullRequest
0 голосов
/ 14 июня 2019

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

Я нашел похожий пост ( Как настроить таргетинг на конкретное wp_nav_menu в функции? ). Но я должен сказать, что я все еще слишком плохо знаком с PHP и разработкой WordPress тем, поэтому я не смог перенести решение других постов в мой код.

// Register Navigation
add_action('after_setup_theme', 'cwb_register_nav');

function cwb_register_nav() {
    register_nav_menus(array(
        'header_nav_main' => 'Header Main Navigation Menu',
        'header_nav_social' => 'Header Social Menu',
        // 'posts_categories_menu' => 'Posts Categories Menu',
        'footer_sitemap_menu' => 'Footer Sitemap Menu',
        'footer_legal_menu' => 'Footer Legal Menu',
        'footer_social_menu' => 'Footer Social Menu'
    ));
}

// Replacing Text with Icons in the Navigation, for example Facebook & Twitter

add_filter('wp_nav_menu', 'my_page_menu_link_names');

function my_page_menu_link_names($menu) {
    $menu = str_replace('Facebook', '<i class="icon facebook"></i>', $menu);
    $menu = str_replace('Twitter', '<i class="icon twitter"></i>', $menu);
    $menu = str_replace('Instagram', '<i class="icon instagram"></i>', $menu);
    $menu = str_replace('LinkedIn', '<i class="icon linkedin"></i>', $menu);
    $menu = str_replace('Google Plus', '<i class="icon googleplus"></i>', $menu);
    $menu = str_replace('Pinterest', '<i class="icon pinterest"></i>', $menu);
    $menu = str_replace('RSS', '<i class="icon rss"></i>', $menu);
    $menu = str_replace('Whatsapp', '<i class="icon whatsapp"></i>', $menu);
    return $menu;
}

Опять же, я хочу, чтобы функция «my_page_menu_link_names» влияла только на меню «header_nav_social» и не влияла, например, на «footer_social_menu», как, например, до сих пор.

1 Ответ

1 голос
/ 14 июня 2019

Я нашел решение сам.Я не знаю, почему мои предыдущие попытки с 'theme_location' не сработали.

// Replacing Text with Icons in the Navigation, for example Facebook & Twitter
    add_filter( 'wp_nav_menu_items', 'my_page_menu_link_names', 10, 2 );
    function my_page_menu_link_names( $menu, $args ) {
        if ($args->theme_location == 'header_nav_social') {
            $menu = str_replace( 'Facebook', '<i class="icon facebook"></i>', $menu );
            $menu = str_replace('Twitter', '<i class="icon twitter"></i>', $menu );
            $menu = str_replace('Instagram', '<i class="icon instagram"></i>', $menu );
            $menu = str_replace('LinkedIn', '<i class="icon linkedin"></i>', $menu );
            $menu = str_replace('Google Plus', '<i class="icon googleplus"></i>', $menu );
            $menu = str_replace('Pinterest', '<i class="icon pinterest"></i>', $menu );
            $menu = str_replace('RSS', '<i class="icon rss"></i>', $menu );
            $menu = str_replace('Whatsapp', '<i class="icon whatsapp"></i>', $menu );
            return $menu;
        }
        return $menu;
    }
...