使用现有钩子的函数,使用自定义do_action钩子不起作用

时间:2016-07-03 16:42:22

标签: javascript php wordpress woocommerce hook-woocommerce

我知道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中挂钩的目的是让产品的价格出现在固定的侧边栏中。所以我在WooCommerce模板文件夹中的<div>文件中创建了一个"content-single-product.php"部分。这是我添加到woocommerce模板的确切代码。

<div class="this_sidebar_is_fixed">
   <?php
      do_action('unique_mycustom_hook');
   ?>
</div>

然后我使用自定义插件调用钩子。

仍然没有用。

1 个答案:

答案 0 :(得分:1)

因为位置也很重要,取决于你挂钩的东西。
woocommerce_before_variations_form位于表单内的single-product/add-to-cart/variable.php模板上。

例如,如果您将unique_mycustom_hook放在此表单之外(或另一个模板中),则无效。这是主要原因......他们也可以是其他人。

----更新----

content-single-product.phpdo_action('unique_mycustom_hook');无法正常工作,因为它需要位于single-product/add-to-cart/variable.php中的表单内...