2017-04-10 96 views
2

在WooCommerce 3.0+中,我创建了一些使用js的选项卡,每个选项卡中包含来自不同类别的产品。我设法修改了简单产品的加购车链接,其中点击了addtocart按钮后,它会转到下一个标签,而无需刷新,并且产品已成功添加到购物车。自定义添加到购物车按钮/链接在变量单产品页

if (has_term('jeans-discount', 'product_cat', $post)) { 
     echo apply_filters('woocommerce_loop_add_to_cart_link', 
sprintf('<a rel="nofollow" data-target="2" href="javascript:void(0); %s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="custom %s">%s</a>', 
    esc_url($product->add_to_cart_url()), 
    esc_attr(isset($quantity) ? $quantity : 1), 
    esc_attr($product->get_id()), 
    esc_attr($product->get_sku()), 
    esc_attr(isset($class) ? $class : 'button'), 
    esc_html($product->add_to_cart_text()) 
    ), 
    $product); 
    } 

但是我不能够修改variation-add-to-cart.php模板文件可变产品addtocart按钮:

<button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html($product->single_add_to_cart_text()); ?></button> 

对于简单产品的addtocart链接显示为href="javascript:void(0); /wordpress/woo-slider/?add-to-cart=73"

有没有办法我可以做到这一点的变量产品addtocart链接以及?

+0

其woocommerce您正在运行的版本? – LoicTheAztec

+0

@LoicTheAztec这是3.0.0 – SandeepTete

+0

好吧,所以我已经发布了两个版本的Woocommerce的答案,但我无法真正测试它(因为您的选项卡系统是自定义的东西)。让我知道它是否有效。谢谢 – LoicTheAztec

回答

1

对于WooCommerce 3.0以上版本将覆盖variation-add-to-cart.php模板是这样的:

<?php 
/** 
* Single variation cart button 
* 
* @see  https://docs.woocommerce.com/document/template-structure/ 
* @author WooThemes 
* @package WooCommerce/Templates 
* @version 3.0.0 
*/ 
if (! defined('ABSPATH')) { 
    exit; 
} 

global $product; 

?> 
<div class="woocommerce-variation-add-to-cart variations_button"> 
    <?php 
     /** 
     * @since 3.0.0. 
     */ 
     do_action('woocommerce_before_add_to_cart_quantity'); 

     woocommerce_quantity_input(array(
      'min_value' => apply_filters('woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product), 
      'max_value' => apply_filters('woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product), 
      'input_value' => isset($_POST['quantity']) ? wc_stock_amount($_POST['quantity']) : $product->get_min_purchase_quantity(), 
     )); 

     /** 
     * @since 3.0.0. 
     */ 
     do_action('woocommerce_after_add_to_cart_quantity'); 

// Set HERE your targeted product category 
if (has_term('jeans-discount', 'product_cat', $product->get_id())) { 

    ?> 
    <button type="submit" data-target="2" class="single_add_to_cart_button button alt" onclick="javascript:void(0);"><?php echo esc_html($product->single_add_to_cart_text()); ?></button> 

<?php } else { // Other product categories 
?> 

    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html($product->single_add_to_cart_text()); ?></button> 

<?php } ?> 

    <input type="hidden" name="add-to-cart" value="<?php echo absint($product->get_id()); ?>" /> 
    <input type="hidden" name="product_id" value="<?php echo absint($product->get_id()); ?>" /> 
    <input type="hidden" name="variation_id" class="variation_id" value="0" /> 
</div> 

我不能测试它的真正(因为我没有标签的启用系统),但是这是成功的在我的测试服务器上工作而没有错误问题。


对于WooCommerce 2.6.x的将覆盖variation-add-to-cart.php模板是这样的:

<?php 
/** 
* Single variation cart button 
* 
* @see  https://docs.woocommerce.com/document/template-structure/ 
* @author WooThemes 
* @package WooCommerce/Templates 
* @version 2.5.0 
*/ 
if (! defined('ABSPATH')) { 
    exit; 
} 

global $product; 

// Set HERE your targeted product category 
if (has_term('jeans-discount', 'product_cat', $product->id)) { 

?> 
<div class="woocommerce-variation-add-to-cart variations_button"> 
    <?php if (! $product->is_sold_individually()) : ?> 
     <?php woocommerce_quantity_input(array('input_value' => isset($_POST['quantity']) ? wc_stock_amount($_POST['quantity']) : 1)); ?> 
    <?php endif; ?> 
    <button type="submit" data-target="2" class="single_add_to_cart_button button alt" onclick="javascript:void(0);"><?php echo esc_html($product->single_add_to_cart_text()); ?></button> 

<?php } else { // Other product categories 
?> 

<div class="woocommerce-variation-add-to-cart variations_button"> 
    <?php if (! $product->is_sold_individually()) : ?> 
     <?php woocommerce_quantity_input(array('input_value' => isset($_POST['quantity']) ? wc_stock_amount($_POST['quantity']) : 1)); ?> 
    <?php endif; ?> 
    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html($product->single_add_to_cart_text()); ?></button> 

<?php } ?> 

    <input type="hidden" name="add-to-cart" value="<?php echo absint($product->id); ?>" /> 
    <input type="hidden" name="product_id" value="<?php echo absint($product->id); ?>" /> 
    <input type="hidden" name="variation_id" class="variation_id" value="0" /> 
</div> 
相关问题