WooCommerce在产品列表上显示产品颜色

时间:2020-08-03 11:02:30

标签: php wordpress woocommerce

我正在WooCommerce上建立商店,无法真正解决一件事。一些产品具有颜色和尺寸差异。我安装了Variation Swatches for WooCommerce plugin,并设法在单个产品页面上显示颜色和尺寸。但是,我只需要在产品列表上显示颜色即可。

我找到了一些直接从产品列表创建购物车功能的解决方案。它显示每种产品的可用颜色和尺寸,以便用户可以选择它们并将产品添加到购物车,而无需访问单个产品页面。看起来像这样:

Products list image

这很好,但是我不希望用户能够从产品列表中将产品添加到购物车中。我只想在产品列表上显示可用的颜色(没有尺寸)。在颜色环下面,我想显示一个常规woocommerce选择选项按钮,用户将单击该按钮以转到单个产品页面,并在选择颜色和尺寸变化后将其添加到购物车中。

这是我已经拥有的功能的代码。 来自functions.php 文件:

/**
 * Replace add to cart button in the loop.
 */
function iconic_change_loop_add_to_cart() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    add_action( 'woocommerce_after_shop_loop_item', 'iconic_template_loop_add_to_cart', 10 );
}

add_action( 'init', 'iconic_change_loop_add_to_cart', 10 );

/**
 * Use single add to cart button for variable products.
 */
function iconic_template_loop_add_to_cart() {
    global $product;

    if ( ! $product->is_type( 'variable' ) ) {
        woocommerce_template_loop_add_to_cart();
        return;
    }

    remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    add_action( 'woocommerce_single_variation', 'iconic_loop_variation_add_to_cart_button', 20 );

    woocommerce_template_single_add_to_cart();
}

/**
 * Customise variable add to cart button for loop.
 *
 * Remove qty selector and simplify.
 */
function iconic_loop_variation_add_to_cart_button() {
    global $product;
    
    ?>
    <div class="woocommerce-variation-add-to-cart variations_button">
        <button type="submit" class="single_add_to_cart_button button"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
        <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>
    <?php
}

我希望我能很好地解释我的问题。任何想法如何实现这一目标?

0 个答案:

没有答案