自定义添加到购物车按钮/链接在变量单产品页
问题描述:
在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链接以及?
答
对于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>
其woocommerce您正在运行的版本? – LoicTheAztec
@LoicTheAztec这是3.0.0 – SandeepTete
好吧,所以我已经发布了两个版本的Woocommerce的答案,但我无法真正测试它(因为您的选项卡系统是自定义的东西)。让我知道它是否有效。谢谢 – LoicTheAztec