Intereting Posts
Редактировать страницу или сообщение из верхней панели администратора Сообщение группы по пользовательской таксономии 2 под пользовательской таксономией 1 Как сделать ссылку «больше» ссылкой на сообщение вместо списка категорий Есть ли лучший способ привлечь пользовательский контент без запроса сообщений? Где находится правильный файл .mo в репозитории языков? проблема миграции файлов с https на сайт http mock – как увидеть сайт-макет Виджеты WordPress / разделители боковой панели? Ошибка wp-settings из-за dp.php как получить идентификатор для сообщения из сообщения и вернуть метатету для него Загрузить текстовый домен из каталога глобальных языков Как создать страницу профиля пользователя? is_admin () возвращает true при использовании admin-ajax.php из скрипта переднего конца Как добавить баннеры в боковой панели моей темы Опция виджета отсутствует Автоматическое обновление уровней запасов WooCommerce из внешней базы данных

Действия widgets_init, не запущенные с детской темы functions.php

Мне нужно добавить новые боковые панели для их использования на разных страницах в моем магазине.

Я использую Woocommerce и свою собственную дочернюю тему Storefront.

Это фрагмент того, что находится в файле functions.php дочерней темы.

add_action( 'init', 'init_storefront_child' ); function init_storefront_child() { // It seems WordPress doesn't take into consideration the 2 lines below. remove_action( 'widgets_init', 'storefront_widgets_init' ); // Not fired (or overrided by something) add_action( 'widgets_init', 'storefront_child_widgets_init' ); // Not fired (or overrided by something) } function storefront_child_widgets_init() { register_sidebar( array( 'name' => __( 'Blog Sidebar' ), 'id' => 'blog', 'description' => 'Sidebar displaying in blog.', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); } 

Поэтому боковые панели в меню «Внешний вид> Виджеты» не меняются и остаются прежними.

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

Что происходит с крюком widgets_init в дочерней теме functions.php?

Спасибо заранее.

В файле 'functions.php' вашей дочерней темы вам нужно использовать remove_action( 'widgets_init', '$name' ); скрипт. Например, в файле functions.php вашей темы из 20-ти детей используйте:

 remove_action( 'widgets_init', 'twentytwelve_widgets_init' ); //necessary to replace parent theme's code 

а затем подключите новый виджет к функции дочерней темы

 add_action( 'widgets_init', 'new_twentytwelve_widgets_init', 0 ); 

Мне просто нужно было изменить приоритет на init_storefront_child на 0 чтобы он срабатывал после того, как все функции были подключены, но до того, как действительно выполняются крючки:

 add_action( 'init', 'init_storefront_child', 0 );