WooCommerce - 在购物车中获取产品的选定变体

Hab*_*man 6 php wordpress woocommerce

你好,

任何人请帮我找到解决方案.

我的客户有批发业务,他不需要woocommerce结账功能.他需要购物车的woocommerce功能,但他不想结账,他想要一个"下订单"按钮.

现在,一切工作正常,订货正确,顺序存储到数据库,并邮寄给管理员,但问题是,我要存储的变化,以及,我的问题是如何让选择的变化(如果有的话) 的产品内部的functions.php产品已经在购物车中?

任何提示都将非常感激.

Rat*_*pps 12

希望我能正确理解您的查询.

您是说要获取产品的变化详细信息(如果有),这些信息位于购物车中.

购物车包含许多物品.您可以遍历项目并获取每个项目的变体详细信息.

购物车商品是一个关联数组,您可以在其中找到产品ID $item['product_id']和变体ID$item['variation_id']

请使用以下函数和传递变体ID来获取变体详细信息:

function get_variation_data_from_variation_id( $item_id ) {
    $_product = new WC_Product_Variation( $item_id );
    $variation_data = $_product->get_variation_attributes();
    $variation_detail = woocommerce_get_formatted_variation( $variation_data, true );  // this will give all variation detail in one line
    // $variation_detail = woocommerce_get_formatted_variation( $variation_data, false);  // this will give all variation detail one by one
    return $variation_detail; // $variation_detail will return string containing variation detail which can be used to print on website
    // return $variation_data; // $variation_data will return only the data which can be used to store variation data
}
Run Code Online (Sandbox Code Playgroud)

现在让我们看看如何使用这个功能

$item_id = ( !empty( $cart_item['variation_id'] ) ) ? $cart_item['variation_id'] : '';
if ( !empty( $item_id ) ) {
   $variations = get_variation_data_from_variation_id( $item_id );
}
Run Code Online (Sandbox Code Playgroud)

希望它会有用.


Nar*_*dra 1

希望这会有所帮助...

function woocommerce_variable_add_to_carts() {
        global $product, $post;
        $variations = $product->get_available_variations();
        foreach ($variations as $key => $value) {
            ?>
            <form action="<?php echo esc_url($product->add_to_cart_url()); ?>"method="post" enctype='multipart/form-data'>
                <input type="hidden" name="variation_id" value="<?php echo $value['variation_id'] ?>" />
                <input type="hidden" name="product_id" value="<?php echo esc_attr($post->ID); ?>" />
                <?php
                if (!empty($value['attributes'])) {
                    foreach ($value['attributes'] as $attr_key => $attr_value) {
                        ?>
                        <input type="hidden" name="<?php echo $attr_key ?>" value="<?php echo $attr_value ?>">
                        <?php
                    }
                }
                ?>

                <?php echo implode('/', $value['attributes']); ?>

                <?php echo $value['price_html']; ?>
                </
                <button type="submit" class="single_add_to_cart_button button alt"><?php echo apply_filters('single_add_to_cart_text', __('Add to cart', 'woocommerce'), $product->product_type); ?></button>

            </form>
            <?php
        }
    }
Run Code Online (Sandbox Code Playgroud)