当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce中为特定产品添加额外的Add to cart按钮

巢烨
2023-03-14

共有1个答案

方增
2023-03-14

要处理产品变体(在可变产品上),这要复杂得多,需要添加一些JavaScript/jQuery代码。

我已经将产品设置限制与主函数分离,在自定义条件函数中,您可以在两种方式中选择:

1)您可以使用产品ID限制:

// PRODUCT IDs based ::: Conditional function
function enable_additional_add_to_cart_button( $product_id ) {
    // HERE define your Product Ids in the array
    $product_ids = array(37, 40, 53);

    return in_array( $product_ids, $product_id ) ? true : false;
}
// PRODUCT CATEGORY based ::: Conditional function
function enable_additional_add_to_cart_button( $product_id ) {
    // HERE define your Product Category terms in the array (can be term Ids, names or slugs)
    $terms = array('t-shirts', 'socks', 'glasses');

    return has_term( $terms, 'product_cat', $product_id ) ? true : false;
}
// Additional add to cart button with fixed bulk quantity
add_action( 'woocommerce_after_add_to_cart_button', 'additional_add_to_cart_button', 20 );
function additional_add_to_cart_button() {
    global $product;

    if( ! enable_additional_add_to_cart_button( $product->get_id() ) ) return;

    $qty     = 12;
    $href    = '?add-to-cart=' . esc_attr( $product->get_id() ) . '&quantity='.$qty;
    $class   = 'single_add_to_cart_button-12 button alt';
    $style   = 'display: inline-block; margin-top: 12px;';
    $btn_txt = __( "Add a case of 12", "woocommerce" );

    ## ---------------------- For non variable products ----------------------- ##

    if( ! $product->is_type('variable') ) :

    // Output
    echo '<br><a href"'.$href.'"= rel="no-follow" class="'.$class.'" style="'.$style.'">'.$btn_txt.'</a>';

    ## ---------- For variable products (handling product variations) --------- ##

    else :

    // Output
    echo '<br><a rel="no-follow" class="'.$class.'" style="'.$style.'">'.$btn_txt.'</a>';

    $data = array();

    // Loop through available variations data
    foreach( $product->get_available_variations() as $variation_data ){
        if( $variation_data['is_in_stock'] && $variation_data['is_purchasable'] ) {
            $variation_id   = $variation_data['variation_id'];
            $attributes_str = '';

            // Loop through variation attributes
            foreach ( $variation_data['attributes'] as $attribute_taxonomy => $term_slug ) {
                $attributes_str .= '&'.$attribute_taxonomy.'='.$term_slug;
            }
            // Set product attributes pairs for variations
            $data[$variation_id] = $href . '&variation_id=' . $variation_id . $attributes_str;
        }
    }
    ?>
    <script type="text/javascript">
    jQuery(function($){
        var a = <?php echo json_encode($data); ?>,  b = '.single_add_to_cart_button-12',
            c = 'wc-variation-selection-needed',    d = 'disabled',
            f = 'form.variations_form',             h = $(c).attr('href'),
            s = '.variations select',               i = 'input.variation_id';

        // On show and hide variation event
        $(f).on('show_variation', function() {
            var found = false;

            $.each(a, function(j,k){
                if( $(i).val() == j ) {
                    found = true;
                    if( $(b).hasClass(c) && $(b).hasClass(d) )
                        $(b).removeClass(c).removeClass(d).attr('href',k);
                }
            });
            if( ! found && ! ( $(b).hasClass(c) && $(b).hasClass(d) ) )
                $(b).addClass(c).addClass(d).removeAttr("href");

        }).on('hide_variation', function() {
            if( ! ( $(b).hasClass(c) && $(b).hasClass(d) ) )
                $(b).addClass(c).addClass(d).removeAttr("href");
        });
    });
    </script>
    <?php
    endif;
}
 类似资料:
  • 我怎样才能使它像预期的那样工作呢? 下面是它在这个链接上的实际工作方式。

  • 勾选了复选框的产品实际上是不可购买的,这是期望的结果。 我遇到的问题是,当我在产品目录页面上为可购买的产品(那些没有勾选的)点击“添加到购物车”时,我被重定向到产品页面,并且默认的WooCommerce消息“对不起,这个产品不能被购买。”出现。应该发生的是,当单击“添加到购物车”按钮时,产品会自动添加到购物车中。 同样从单品页面,我可以毫无问题地添加可购推车。

  • 我正在使用一个名为“一键聊天订购”的插件通过whatsapp订购产品,并且我在所有产品的单一产品页面上隐藏了“添加到购物车”按钮。只有当产品重量小于50kg时,我才能显示“添加到购物车”按钮。 样本输出 需要在报价按钮后显示添加到购物车按钮。我已经使用这个片段来隐藏基于我的条件的添加到购物车按钮。但它也隐藏了WhatsApp报价按钮。我不知道为什么? 我是WooCommerce的新手。请帮助解决这

  • 我正在尝试将我的WooCommerce档案页面上特定产品类别的add to cart按钮更改为“Read More”按钮,该按钮将链接到产品页面(但不链接到单个产品页面本身)。 使用“将添加到购物车按钮替换为WooCommerce 3中的shop pages中的read more链接到product页面”的答案代码,如何将其限制为仅有一个产品类别(本例中术语名称为“Classs”)? 感谢任何帮助

  • 我正在尝试将外部产品的价格添加到产品详细信息页面上的“添加到购物车”按钮中 [现在买100英镑]而不是[现在买]