Изменить порядок элементов в заголовке темы магазина
Я использую дочернюю тему 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);
}