Функция, работающая с существующим хуком, не работает, используя свой собственный хук do_action
Я знаю, что add_action используется для вызова функции в месте ловушки. Я использовал add_action, как показано ниже, и он дает мне вывод, который мне нужен (какова цена продукта в WooCommerce):
add_action( 'woocommerce_before_variations_form', 'woocommerce_single_variation', 10 );
Я использовал приведенный выше код внутри собственного плагина, который я создал.
Но теперь я хочу, чтобы цена появилась в другом месте. Я прочитал о do_action и узнал, что он используется для создания новых хуков.
Так что я сделал новый крючок, как показано ниже -
do_action('unique_mycustom_hook');
Новый хук хранится внутри "content-single-product.php" внутри папки шаблона Woocommerce.
И затем я вызвал свою функцию на моем новом хуке, используя код ниже в моем файле плагина.
add_action( 'unique_mycustom_hook', 'woocommerce_single_variation', 10 );
Но на этот раз я НЕ получаю никакой информации!
У вас есть идея, почему add_action работал в существующем хуке woocommerce, но не работал в моем новом хуке, созданном с использованием do_action?
Благодарю.
ОБНОВЛЕНИЕ - я добавляю больше информации по запросу.
Цель моей ловушки в woocommerce состоит в том, чтобы цена продукта отображалась на фиксированной боковой панели. Итак, я сделал <div>
раздел внутри файла "content-single-product.php"
внутри папки шаблона WooCommerce. Это именно тот код, который я добавил в шаблон woocommerce.
<div class="this_sidebar_is_fixed">
<?php
do_action('unique_mycustom_hook');
?>
</div>
Затем я вызываю хук, используя свой собственный плагин.
Тем не менее это не работает.
1 ответ
Потому что местоположение также важно в зависимости от того, что вы подключаете. woocommerce_before_variations_form
находится на single-product/add-to-cart/variable.php
шаблон внутри формы.
Так, например, если вы разместите свой unique_mycustom_hook
вне этой формы (или в другом шаблоне) он не будет работать. Это основные причины... Они могут быть и другими.
---- обновлено ----
внутри content-single-product.php
ваш do_action('unique_mycustom_hook');
не может работать, потому что он должен быть расположен внутри формы в single-product/add-to-cart/variable.php
...