Как через хук в мобильное меню добавить второе меню по ID?

Как через хук в мобильное меню добавить второе меню по ID? на сайте с темой OCEAN WP

до этого я выводил (в теме OCEAN WP)

/**
 * Выводим меню сразу в HTML — sidr заберёт их мгновенно
 */
add_action( 'wp_footer', 'my_output_menus_for_sidr', 1 );
function my_output_menus_for_sidr() {
    ?>
    <div id="site-navigation-wrap" class="clr" style="position:absolute;left:-9999px;top:-9999px;">
        <nav id="site-navigation" class="navigation main-navigation clr" role="navigation">
            <?php
            wp_nav_menu( array(
                'menu' => 18,
                'container' => false,
                'menu_class' => 'main-menu dropdown-menu sf-menu',
                'fallback_cb' => false,
            ) );
            wp_nav_menu( array(
                'menu' => 316,
                'container' => false,
                'menu_class' => 'main-menu dropdown-menu sf-menu',
                'fallback_cb' => false,
            ) );
            ?>
        </nav>
    </div>
    <?php
}

Еще один вариант:



/**
 * Безопасное добавление меню 18 в начало мобильного меню (гарантированное удаление иконок)
 */
add_filter( 'wp_nav_menu_items', 'safe_prepend_menu_18', 9999, 2 );
function safe_prepend_menu_18( $items, $args ) {
    // Срабатывает только для мобильного меню
    if ( isset( $args->theme_location ) && $args->theme_location === 'mobile_menu' ) {
        
        // 1. Временно отключаем этот фильтр, чтобы внутренний вызов wp_nav_menu не зациклился
        remove_filter( 'wp_nav_menu_items', 'safe_prepend_menu_18', 9999 );
        
        // 2. Получаем HTML меню 18
        $menu_18 = wp_nav_menu( array(
            'menu'        => 18,
            'container'   => false,
            'echo'        => false,
            'fallback_cb' => false,
            'items_wrap'  => '%3$s', // Отдаем только <li>, без обертки <ul>
        ) );
        
        // 3. Включаем фильтр обратно для остальных меню на странице
        add_filter( 'wp_nav_menu_items', 'safe_prepend_menu_18', 9999, 2 );
        
        // 4. Если меню 18 не пустое, очищаем его от иконок и добавляем разделитель
        if ( ! empty( $menu_18 ) ) {
            
            // Массив регулярных выражений для точечного и гарантированного удаления иконок
            $patterns = [
                // Удаляем <i> с классом, содержащим "icon" (например, icon-rocket, sidr-class-icon)
                '/<i\b[^>]*class="[^"]*icon[^"]*"[^>]*>\s*<\/i>/is',
                
                // Удаляем любые оставшиеся пустые теги <i> (даже без класса icon)
                '/<i\b[^>]*>\s*<\/i>/is',
                
                // Удаляем инлайн SVG
                '/<svg\b[^>]*>.*?<\/svg>/is',
                
                // Удаляем <span> с классами иконок (включая sidr, fa, dashicons)
                '/<span\b[^>]*class="[^"]*(?:icon|dashicons|fa|mdi|sidr)[^"]*"[^>]*>\s*<\/span>/is',
            ];
            
            $menu_18 = preg_replace( $patterns, '', $menu_18 );
            
            // Убираем возможные лишние пробелы, оставшиеся после удаления тегов
            $menu_18 = preg_replace( '/\s+/', ' ', $menu_18 );
            
            $separator = '<li class="mobile-menu-separator" style="border-top: 2px solid #e0e0e0; margin: 20px 15px; list-style: none; pointer-events: none;"></li>';
            $items = $menu_18 . $separator . $items;
        }
    }
    
    return $items;
}






guest
Закрыть меню