2

有没有人能够通过单击添加到购物车按钮来添加多个相同种类的产品。我附上了一张图片来展示我想要建造的东西。

目标:能够在我的目录页面上一次将多个产品添加到购物车,而不是查看产品页面。

这就是我想要构建的。 查看ink.talentosoft.com,想象一下,在产品下,

这就是我想要构建的。查看ink.talentosoft.com,想象一下,在products下,“Details”链接是替换数字输入,“Add to Cart”替换为可以处理数字输入的添加购物车按钮

我查看了单个产品/添加到购物车/简单产品的代码,问题是:数字输入和添加到购物车按钮包含在表单元素中。由于 wp 代码分散,我无法找到此表单的处理程序。如果找到表单的处理程序,理论上我是否可以将simple.php添加倍数部分复制到我的目录页面中?

我已经查看并尝试使用挂钩do_action( "woocommerce_simple_add_to_cart" );来调出single.php文件。

我想问一下woocommerce_add_to_cart_action()plugin/woocommerce/woocommerce-function.php中的方法,我可以直接调用这个方法吗(给这个方法添加一个钩子),我如何跟踪输入的数字以便我知道用户有多少产品想要在购物车中?

如果我进行此更改,这是否会忽略 woo 将 AJAX 功能添加到购物车?当然,取决于添加到购物车交易的哪个阶段,我可以挤进这个事件处理程序。

4

1 回答 1

0

这个解决方案对我帮助很大。

在您的主题中创建此文件: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; ?>
于 2013-08-31T16:45:20.753 回答