1

我知道 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 制作的新挂钩中无效吗?

谢谢。


更新 - 我正在应要求添加更多信息。

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

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

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

仍然无法正常工作。

4

1 回答 1

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......</p>

于 2016-07-03T17:56:19.937 回答