在Wordpress中,是否有可能在前端为点击按钮添加有条件的钩子动作?



我正在制作一个产品捆绑器(任何产品的礼盒)在woocommerce,但我有两个按钮在前端:button1:我想为我的礼盒收集一些产品button2:我想看到预定义的礼品盒。

我这样做了第一个选项:add_action('woocommerce_before_add_to_cart_button', 'getList', 10,0);-其中getList函数有一些特殊产品的输入字段,所以我可以将选中的产品发送到购物车,它工作得很好。

但是…如果客户选择查看预定义的框,我不需要添加getList函数,而是添加从列表中选择的其他函数,等等,这是另一个问题。

我想知道使用一些会话存储变量来发送数据,哪个按钮单击?但是,它为所有点击渲染页面。

另一个想法——听起来像噩梦——把所有东西塞进一个函数,然后用jQuery设置"display: none/block"函数中返回的HTML元素的一半。

如果这是一个愚蠢的问题,我很抱歉,我来自react.js的世界,和整个WordPress是相当不同的世界。

您可以实际显示按钮,也可以使用单个钩子运行条件操作。请看下面的代码:

add_action('woocommerce_before_add_to_cart_button', 'display_bundles');
function display_bundles(){

if (isset($_POST['bundleBtn']) && $_POST['bundleBtn'] == 'get_products_list' ) {

// write code to display your product list. sample given below:
echo "<h3>Create your own bundle:</h3>";
echo "<ul>";
echo "<li>Product 1</li>";
echo "<li>Product 2</li>";
echo "<li>Product 3</li>";
echo "</ul>";

}
if (isset($_POST['bundleBtn']) && $_POST['bundleBtn'] == 'get_predefined_bundles' ) {
// write code to display your predefined bundles. sample given below:
echo "<h3>Select from Predefined Bundles:</h3>";
echo "<ul>";
echo "<li>Predefined Bundle 1</li>";
echo "<li>Predefined Bundle 2</li>";
echo "<li>Predefined Bundle 3</li>";
echo "</ul>";

}

?>
<form id="btnform1" method="post" action="">
<input type="hidden" name="bundleBtn" value="get_products_list" />
<input type="submit" name="btn_get_list_submit" value="Create Bundle from Products" />
</form>
<form id="btnform2" method="post" action="">
<input type="hidden" name="bundleBtn" value="get_predefined_bundles" />
<input type="submit" name="btn_get_list_submit" value="View Predefined Bundles" />
</form>
<?php
}

我使用上述代码解决问题的方法是:

  1. 写一个单独的自定义函数,钩子到woocommerce_before_add_to_cart_button显示按钮,也做一些操作
  2. 自定义函数输出两个包装在两个html表单中的按钮。一个按钮是获取产品列表,第二个按钮是获取预定义的捆绑包。
  3. 每个按钮发送一个唯一的POST值与名称bundleBtn每当他们被点击。我们使用POST值来找到用户想要的。
  4. 根据用户的选择,我们将显示产品列表或预定义的捆绑包。

最后,您需要在这些IF条件下编写代码以使此工作

最新更新