使用现有挂钩的函数,不能使用自定义 do_action 挂钩

Function working with an existing hook, doesn't work using it a custom do_action hook

我知道add_action是用来在hook的位置调用函数的。我使用 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 中挂钩的目的是让产品的价格出现在固定的侧边栏中。所以我在 WooCommerce 模板文件夹内的文件 "content-single-product.php" 中创建了一个 <div> 部分。这是我添加到 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

中的表格内