Я знаю, что 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>
Затем я вызываю хук, используя свой собственный плагин.
Тем не менее это не работает.
Потому что местоположение также важно в зависимости от того, что вы подключаете.
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
…
Других решений пока нет …