Функция, работающая с существующим хуком, не работает, используя свой собственный хук 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...

Другие вопросы по тегам