【问题标题】:Hide add to cart button if extra product option is chosen如果选择了额外的产品选项,则隐藏添加到购物车按钮
【发布时间】:2022-01-20 16:39:25
【问题描述】:

我正在使用 Woocommerce 请求报价插件和 TM 额外产品选项插件。

我希望我的客户通常要求报价,因此在每个产品的“添加到购物车”按钮旁边都有一个按钮。

如果客户选择产品的某个选项(通过 TM 额外产品选项),我想隐藏“添加到购物车”按钮,以便仅询问报价。并且不要直接结帐。

我已经找到了这个 sn-p 来使按钮可见或不可见。

add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2);

function my_woocommerce_is_purchasable($is_purchasable, $product) {
 // Write code to access checkbox value in this function
 // let $checkbox_value be the value from checkbox
  return ($checkbox_value == false ? false : $is_purchasable);
}

但我不知道如何编写仅在选中 TM Extra 产品选项中的字段时才隐藏的条件。这是单选按钮的 HTML。

<li class="tmcp-field-wrap tm-per-row tc-active">
        <label class="tm-epo-field-label" for="tmcp_choice_4_0_561e9641a28f9d">
                <input class="tmcp-field tm-epo-field tmcp-radio tcenabled" name="tmcp_radio_4" data-price="" data-rules="[&quot;&quot;]" data-original-rules="[&quot;&quot;]" data-rulestype="[&quot;&quot;]" data-image="" data-imagec="" data-imagep="" data-imagel="" data-image-variations="[]" value="kostenlose Preisanfrage_0" id="tmcp_choice_4_0_561e9641a28f9d" type="radio" checked="checked">
        <span class="tc-label-wrap"><span class="tc-label tm-label">kostenlose Preisanfrage</span></span>    </label>
    <span class="tc-price-wrap">
    <span class="price tc-price hidden">
    <span class="amount">0,00€</span>
</span>
</span>
        </li>
        </li>

我不确定这是否是最好的方法。

【问题讨论】:

    标签: woocommerce conditional-statements cart options


    【解决方案1】:

    我相信不幸的是,当用户选择单选按钮时您需要更改按钮,除非使用 ajax,否则您无法在 php 代码中执行此操作。虽然你可以通过一些 jQuery 来控制它。 我相信如果将以下内容添加到页面中应该可以工作。它侦听单选按钮的任何更改,如果确实发生更改,则检查是否已检查以及该值是否为指定单选按钮选项的值。如果是这样,它会禁用添加到购物车按钮。

    jQuery("input[type=radio][name='tmcp_radio_4']").change(function() { 
    if (this.checked && this.value == 'kostenlose Preisanfrage_0' ) 
        jQuery('.single_add_to_cart_button').prop('disabled', true);
    else
        jQuery('.single_add_to_cart_button').prop('disabled', false);
    });
    

    改为完全隐藏您将使用的添加到购物车按钮

    jQuery('input[type=radio][name="tmcp_radio_4"]').change(function() { 
    if (this.checked && this.value == 'kostenlose Preisanfrage_0' ) 
        jQuery('.single_add_to_cart_button').hide();
    else
        jQuery('.single_add_to_cart_button').show();
    });
    

    如果您使用的是 Chrome 浏览器,您可以尝试在您要试用的页面上的控制台中添加它,以测试它是否有效。当您更改单选按钮时,您应该会看到添加到购物车按钮的更改。如果它有效,您可以继续将其添加到您的代码中。

    如果你不确定如何将它添加到你的代码中,有很多方法可以在 WordPress 中添加 jQuery 代码,这里有一篇关于它的文章How to Properly Add jQuery scripts to WordPress

    【讨论】:

    • 感谢您的回答。我试过了,首先弹出一个错误。但是后来我使用了 'if (this.checked && value=='kostenlose Preisanfrage_0' ) ' 而不是一个 "=" 并且错误消失了。但结果并没有像我希望的那样工作。任何让它发挥作用的想法:)
    • 很抱歉,它应该是“this.value ==" 现在正确了。是什么现在没有按预期工作?
    • 添加到购物车按钮仍然显示,无论选中哪个单选按钮。
    • 我提供的代码是禁用而不是隐藏按钮,如果 css 没有导致按钮在禁用时更改其样式,则可能并不明显。我很抱歉。我现在添加了一个选项,可以按照最初的要求隐藏按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 2021-01-31
    相关资源
    最近更新 更多