任何人都可以通过点击“添加到购物车”按钮添加同类产品。我附上一张图片来展示我想要建立的内容。
目标:要在我的CATALOG页面上一次性将产品的多个产品添加到购物车,请不要查看产品页面。
这就是我想要构建的内容。检查ink.talentosoft.com,想象一下,在产品下,“详细信息”链接是替换数字输入,“添加到购物车”替换为可以处理数字输入的添加购物车按钮
我查看了单品/添加到购物车/简单产品的代码,问题是:数字输入和添加到购物车按钮都包含在表单元素中。由于wp代码分散,我无法找到此表单的处理程序。如果找到了表单的处理程序,理论上我是否可以复制到simple.php
添加倍数部分,直到我的目录页面?
我查看了并尝试使用挂钩do_action( "woocommerce_simple_add_to_cart" );
来调出single.php
文件。
我想问一下插件/ woocommerce / woocommerce-function.php中的woocommerce_add_to_cart_action()
方法,我可以直接调用此方法(为此方法添加一个钩子),如何跟踪数字输入所以我知道用户想要购买多少产品?
如果我进行此更改,是否会忽略woo的AJAX功能添加到购物车?当然,根据添加到购物车交易的哪个阶段,我能够挤进这个事件处理程序。
答案 0 :(得分:0)
This solution给了我很多帮助。
在主题中创建此文件:woocommerce/loop/add-to-cart.php
。并将以下代码添加到其中:
<?php
/**
* Custom Loop Add to Cart.
*
* Template with quantity.
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly.
global $product;
?>
<?php if ( ! $product->is_in_stock() ) : ?>
<a href="<?php echo apply_filters( 'out_of_stock_add_to_cart_url', get_permalink( $product->id ) ); ?>" class="button"><?php echo apply_filters( 'out_of_stock_add_to_cart_text', __( 'Read More', 'woocommerce' ) ); ?></a>
<?php else : ?>
<?php
$link = array(
'url' => '',
'label' => '',
'class' => ''
);
switch ( $product->product_type ) {
case "variable" :
$link['url'] = apply_filters( 'variable_add_to_cart_url', get_permalink( $product->id ) );
$link['label'] = apply_filters( 'variable_add_to_cart_text', __( 'Select options', 'woocommerce' ) );
break;
case "grouped" :
$link['url'] = apply_filters( 'grouped_add_to_cart_url', get_permalink( $product->id ) );
$link['label'] = apply_filters( 'grouped_add_to_cart_text', __( 'View options', 'woocommerce' ) );
break;
case "external" :
$link['url'] = apply_filters( 'external_add_to_cart_url', get_permalink( $product->id ) );
$link['label'] = apply_filters( 'external_add_to_cart_text', __( 'Read More', 'woocommerce' ) );
break;
default :
if ( $product->is_purchasable() ) {
$link['url'] = apply_filters( 'add_to_cart_url', esc_url( $product->add_to_cart_url() ) );
$link['label'] = apply_filters( 'add_to_cart_text', __( 'Add to cart', 'woocommerce' ) );
$link['class'] = apply_filters( 'add_to_cart_class', 'add_to_cart_button' );
} else {
$link['url'] = apply_filters( 'not_purchasable_url', get_permalink( $product->id ) );
$link['label'] = apply_filters( 'not_purchasable_text', __( 'Read More', 'woocommerce' ) );
}
break;
}
// If there is a simple product.
if ( $product->product_type == 'simple' ) {
?>
<form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart" method="post" enctype="multipart/form-data">
<?php
// Displays the quantity box.
woocommerce_quantity_input();
?>
<button type="submit" class="button alt"><?php echo $link['label']; ?></button>
</form>
<?php
} else {
echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf('<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="%s button product_type_%s">%s</a>', esc_url( $link['url'] ), esc_attr( $product->id ), esc_attr( $product->get_sku() ), esc_attr( $link['class'] ), esc_attr( $product->product_type ), esc_html( $link['label'] ) ), $product, $link );
}
?>
<?php endif; ?>