В дочерней теме пытаюсь переопределить хук, который используется в основной теме:
funcitons.php - основная тема
function thegem_woocommerce_template_loop_category_title($category) {
echo '<div class="category-overlay">';
echo '<h6 class="category-title">'.$category->name.'</h6>';
echo '<div class="category-overlay-separator"></div>';
echo '<div class="category-count">'.sprintf(esc_html(_n('%s item', '%s items', $category->count, 'thegem')), $category->count).'</div>';
echo '</div>';
}
remove_action( 'woocommerce_shop_loop_subcategory_title', 'woocommerce_template_loop_category_title', 10 );
add_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title', 10 );
functions.php - дочерняя тема
function thegem_woocommerce_template_loop_category_title1($category) {
echo '<div class="category-overlay">';
echo '<h6 class="category-title">'.$category->name.' test</h6>';
echo '</div>';
}
remove_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title', 10 );
add_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title1', 10 );
но срабатывают два хука.
Как переопределить хук из основной темы, чтобы он не выводился?
Сначала подключается код плагинов, потом functions.php в дочерней теме, потом в основной - так устроен WordPress. На момент исполнения вашей строки
remove_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title', 10 );
функция thegem_woocommerce_template_loop_category_title
не прикреплена к хуку, поэтому никакого эффекта она не имеет. Как результат - выполняются обе функции, приведенные в вопросе.
В то же время remove_action
в дочерней теме срабатывает, потому что исполняется после подключения плагина WooCommerce, который и объявляет свою функцию для хука.
Ваш код в дочерней теме должен выглядеть так:
function thegem_woocommerce_template_loop_category_title1( $category ) {
remove_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title', 10 );
echo '<div class="category-overlay">';
echo '<h6 class="category-title">' . $category->name . ' test</h6>';
echo '</div>';
}
add_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title1', 0 );
Обратите внимание на приоритет 0
в add_action
(может быть любым меньше 10). Вы запускаете свою функцию ...title1
по событию woocommerce_shop_loop_subcategory_title
раньше функции из родительской темы, и прямо внутри своей функции отменяете родительскую.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Есть цифры от 1 до 73Нужно из этого набора выбрать только 5 случайных, но чтобы они не повторялись
Суть в том, что нужно было изменить имя приложения использовал команду php artisan app:name "DKP Online" - да, косякнул, случайно вставил пробел, теперь имею...
Хочу установить библиотеку https://githubcom/VKCOM/vk-php-sdk Но возможности установить её через composer нет, т