Изменить порядок элементов в заголовке темы магазина

Я использую дочернюю тему WordPress, тему WooCommerce Storefront.

Закрепленные функции заголовка витрины упорядочены следующим образом:

<?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
         */
        do_action( 'storefront_header' ); ?>

Я хотел бы изменить порядок, чтобы product_search предшествует secondary_navigation,

Я просматривал файлы магазина и не могу найти, где установлен этот порядок, только элементы в отдельности.

Может кто-нибудь, пожалуйста, помогите мне подключить или сделать то, что необходимо, чтобы изменить заказ, пожалуйста?

5 ответов

В предложении @loictheaztec не было указано add_action, как показано ниже:

add_action( 'init' , 'add_and_remove' , 15 );
function mh_add_and_remove() {
        remove_action( 'storefront_header', 'storefront_product_search', 40 );
        add_action( 'storefront_header', 'storefront_product_search', 25 );
}

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

Так...

add_action( 'init' , 'add_and_remove' , 15 );
function mh_add_and_remove() {
        remove_action( 'storefront_header', 'storefront_product_search', 40 );
        add_action( 'storefront_header', 'storefront_product_search', 25 );
}

вместо того, чтобы просто положить его в function.php как таковой...

remove_action( 'storefront_header', 'storefront_product_search', 40 );
add_action( 'storefront_header', 'storefront_product_search', 25 );

Для этого вам нужно будет сначала удалить его с помощью remove_action() функции, а затем вы подключите его снова с add_action() функция, меняющая приоритет с 40 на 25.

Приоритет 25 расположен между:
@hooked storefront_site_branding - приоритет 20 и @hooked storefront_secondary_navigation - приоритет 30

Вставьте этот фрагмент кода в файл function.php вашей активной папки темы (или, что лучше, в папку активной дочерней темы):

remove_action( 'storefront_header', 'storefront_product_search', 40 );
add_action( 'storefront_header', 'storefront_product_search', 25 );

Я попытался отредактировать принятый ответ, но получил отказ...

Каждый ответ в этом посте содержит ошибку, имя функции не совпадает с именем команды add_action....

Значит, должно быть...

add_action( 'init' , 'change_header_order' , 15 );
function change_header_order() {
        remove_action( 'storefront_header', 'storefront_product_search', 40 );
        add_action( 'storefront_header', 'storefront_product_search', 25 );
}

Вы можете удалить действия, а затем добавить их в том порядке, в котором вы хотите, чтобы они отображались:

      add_action( 'init' , 'mh_add_and_remove' , 15 );
function mh_add_and_remove() {
    remove_action( 'storefront_header','storefront_header_container', 0 );
    remove_action( 'storefront_header','storefront_skip_links', 5 );
    remove_action( 'storefront_header', 'storefront_site_branding', 20);
    remove_action( 'storefront_header','storefront_secondary_navigation', 30);
    remove_action( 'storefront_header', 'storefront_product_search', 40 );
    remove_action( 'storefront_header', 'storefront_header_container_close', 4);

    add_action( 'storefront_header','storefront_header_container', 69 );
    add_action( 'storefront_header','storefront_skip_links', 90 );
    add_action( 'storefront_header', 'storefront_site_branding', 91);
    add_action( 'storefront_header','storefront_secondary_navigation', 92);
    add_action( 'storefront_header', 'storefront_product_search', 93 );
    add_action( 'storefront_header', 'storefront_header_container_close', 94);
}
Другие вопросы по тегам