Измените порядок содержимого заголовка Woocommerce Storefront, используя действие удаления и добавления.

Я использую дочернюю тему Storefront. Я отредактировал копию файла header.php и добавил в эту часть после удаления панели навигации лишний div:

<header id="masthead" class="site-header" role="banner" style="<?php storefront_header_styles(); ?>">
    <div class="col-full">

        <?php
        /**
         * Functions hooked into storefront_header action
         *
         * @hooked storefront_skip_links                       - 0
         * @hooked storefront_social_icons                     - 10
         * @hooked storefront_site_branding                    - 20
         * @hooked storefront_secondary_navigation             - 30
         * @hooked storefront_product_search                   - 40
         * @hooked storefront_primary_navigation_wrapper       - 42
         * @hooked storefront_primary_navigation               - 50
         * @hooked storefront_header_cart                      - 60
         * @hooked storefront_primary_navigation_wrapper_close - 68
         */
    **remove_action( 'storefront_header', 'storefront_primary_navigation', 50 );**
    **add_action('storefront_header', 'storefront_primary_navigation', 51);**

    **add_action('storefront_header', 'jk_storefront_header_content', 50);**        
    do_action( 'storefront_header' ); 

        ?>          
    </div>
</header><!-- #masthead -->

Это кажется правильным, но вместо панели навигации, которую нужно удалить и заменить, у меня есть старая панель навигации, дополнительный div и другая навигация, что означает, что панель навигации никогда не удалялась…

Как это можно исправить?


person Maria Georgali    schedule 07.01.2018    source источник


Ответы (1)


Вам не нужно переопределять header.php в дочерней теме…

Чтобы правильно использовать remove_action(), вам нужно встроить его в пользовательскую функцию, связанную с хуком действия init следующим образом:

add_action('init', 'replace_storefront_primary_navigation' );
function replace_storefront_primary_navigation(){
    remove_action( 'storefront_header', 'storefront_primary_navigation', 50 );
    add_action('storefront_header', 'jk_storefront_header_content', 50);
}
function jk_storefront_header_content(){
    // your custom navigation code goes here
    echo '<span style="display:inline-block; padding:10px; border:solid 1px grey;">My custom mega menu goes Here</span>';
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).

Протестировано и работает на теме WooCommerce Storefront.

person LoicTheAztec    schedule 07.01.2018
comment
Я запускаю вышеизложенное изнутри function.php не добавляет мой статический текстовый элемент div над панелью навигации. Панель навигации исходит от плагина Mega Menu, связано ли это с этой проблемой? - person Maria Georgali; 08.01.2018
comment
Я действительно не знаю, как в вашем случае... Код работает на моем тестовом сервере - person LoicTheAztec; 08.01.2018
comment
Это работает частично, всегда добавляя текст в конце заголовка. Чтобы работать, я вызываю функцию замены из заголовка. Я расставил несколько приоритетов, но тот же результат. Он обрабатывает поиск, корзину, навигацию и логотип как единое целое. - person Maria Georgali; 08.01.2018
comment
@MariaGeorgali, вы должны проверить, где плагин печатает мужчин. Он использует крючок, как и вы. - person Adriano G. V. Esposito; 19.02.2020