我知道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>
然后我使用自定义插件调用钩子。
仍然没有用。
答案 0 :(得分: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
中的表单内...