我知道add_action用于在钩子的位置调用函数 . 我使用了下面的add_action,它给了我需要的输出(这是WooCommerce中产品的价格):
add_action( 'woocommerce_before_variations_form', 'woocommerce_single_variation', 10 );
我在我构建的自定义插件中使用了上面的代码 .
但现在我希望价格出现在不同的位置 . 我读到了do_action,我了解到它用于制作新的钩子 .
所以我做了一个像下面这样的新钩子 -
do_action('unique_mycustom_hook');
新钩子保存在Woocommerce模板文件夹中的“content-single-product.php”内 .
然后我使用我的插件文件中的下面的代码在我的新钩子上调用我的函数 .
add_action( 'unique_mycustom_hook', 'woocommerce_single_variation', 10 );
但这次我没有得到任何输出!
您是否知道为什么add_action在预先存在的woocommerce钩子中工作但在我使用do_action制作的新钩子中不起作用?
谢谢 .
UPDATE - I am adding more information on request.
我在woocommerce中挂钩的目的是让产品的价格出现在固定的侧边栏中 . 所以我在WooCommerce模板文件夹中的 "content-single-product.php"
文件中创建了一个 <div>
部分 . 这是我添加到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
放在此表单之外(或在另一个模板中),它将无效 . 这是主要原因......他们也可以是其他人 .---- updated ----
在
content-single-product.php
里面do_action('unique_mycustom_hook');
无法正常工作,因为它需要位于single-product/add-to-cart/variable.php
中的表单内...