WooC Commerce - Cách thêm trường tùy chỉnh vào giỏ hàng và tổng số giỏ hàng [đã đóng]


7

Tôi đang sử dụng plugin WooC Commerce và có truy vấn sau:

Trong trang sản phẩm duy nhất, tôi có một sản phẩm dựa trên những lựa chọn nhất định của người mua, giá trị chi phí vận chuyển được tính, sau đó tôi cần chuyển / bao gồm như một phần của các mục trong giỏ hàng dưới dạng cột mới, "Chi phí vận chuyển" khi xem giỏ hàng của bạn.

Mặc dù vậy, người mua có thể quyết định mua ba sản phẩm khác nhau trong đó ba sản phẩm này có thể có các tính toán chi phí vận chuyển khác nhau, sau khi nhấn nút "Thêm vào giỏ hàng" ba lần.

Ví dụ:

Product A selections calculates a Shipping Cost of $2.00
Product B selections calculates a Shipping Cost of $4.00
Product C selections calculates a Shipping Cost of $6.00

Vì vậy, dựa trên những điều trên, khi người mua đã mua sắm xong và nhấn "Xem giỏ hàng", tôi muốn họ thấy:

Item                       Price      Shipping Cost      Quantity          Total     
---------------------------------------------------------------------------------------
Product A                      $10        $2                     1                 $10
Product B                      $5         $4                     1                 $5
Product C                      $15        $6                     1                 $15

Đó là cột trường tùy chỉnh "Chi phí vận chuyển" mà tôi muốn thêm vào giỏ hàng, đây là điều tôi không chắc chắn về cách thực hiện.

Ngoài ra, tôi cũng muốn thêm vào "Tổng số giỏ hàng" bên dưới, một trường tùy chỉnh khác của "Chi phí vận chuyển" có tổng trị giá 12 đô la, sau đó sẽ được thêm vào Tổng sản phẩm, nghĩa là

Cart Totals

Cart Subtotal       $30
Shipping Cost       $12

Order Total         $42

Một số mã mà tôi đã sử dụng cho Giỏ hàng Tổng chi phí vận chuyển là:

function woo_add_cart_fee() {
  global $woocommerce;
  $woocommerce->cart->add_fee( __('Shipping Cost', 'woocommerce'), 100 );
}
add_action( 'woocommerce_before_calculate_totals', 'woo_add_cart_fee');

Vì vậy, tôi cần biết cách thêm "Chi phí vận chuyển" vào cả Chi tiết sản phẩm giỏ hàng cũng như Tổng số giỏ hàng.

Bất kỳ trợ giúp mã hóa sẽ được nhiều đánh giá cao.

Cảm ơn.


Mã nào bạn đã thử cho đến nay?
Brad Dalton

Xin chào, đã cập nhật bài viết của tôi ở trên nhưng đã mã hóa 100, điều này không muốn tôi muốn nhưng tính toán.
tonyf

Đây không phải là một câu hỏi wordpress mà là một câu hỏi thương mại điện tử, tốt hơn bạn nên hỏi nó trong các kênh hỗ trợ của plugin vì loại câu hỏi này chủ yếu ngoài chủ đề ở đây
Mark Kaplun

Thật kỳ lạ khi tôi đã thấy rất nhiều câu hỏi trong diễn đàn này với thẻ WooC Commerce.
tonyf

có, và tỷ lệ trả lời hữu ích không nhiều hơn không.
Đánh dấu Kaplun

Câu trả lời:


4

Đầu tiên, lưu trữ trường tùy chỉnh khi bạn chỉnh sửa sản phẩm của mình. Hãy nói rằng bạn đang sử dụng trường tùy chỉnh custom_shipping_cost. Hãy chắc chắn rằng nó được lưu dưới dạng số, ví dụ 20, KHÔNG $ 20,00

Sau đó, bạn cần hiển thị trường này trên trang giỏ hàng. Đáng buồn thay, không có bộ lọc để thêm một cột mới trong bảng giỏ hàng, vì vậy bạn cần chỉnh sửa tệp mẫu hoặc nếu không bắt buộc phải là một cột, bạn có thể làm điều này thay vào đó, mã này sẽ thêm giá trị bổ sung vào cuối cùng cột:

add_filter('woocommerce_cart_item_subtotal','additional_shipping_cost',10,3);
function additional_shipping_cost($subtotal, $values, $cart_item_key) {
    //Get the custom field value
    $custom_shipping_cost = get_post_meta($post->ID, 'custom_shipping_cost', true);

    //Just for testing, you can remove this line
    $custom_shipping_cost = 10;

    //Check if we have a custom shipping cost, if so, display it below the item price
    if ($custom_shipping_cost) {
        return $subtotal.'<br>+'.woocommerce_price($custom_shipping_cost).' Shipping Cost';
    } else {
        return $subtotal;   
    }
}

Vì vậy, với điều này, phần đầu tiên của câu hỏi được thực hiện. Nếu bạn muốn hiển thị nó như ví dụ của bạn ở trên, bạn cần sao chép tệp plugin / wooc Commerce / samples / cart / cart.php thành chủ đề / yourtheme / wooc Commerce / cart / cart.php. Sau đó chỉnh sửa tệp, thêm cột của riêng bạn, bạn có thể sử dụng mã ở trên để hiển thị giá.

Sau này, chúng tôi cần cập nhật tổng số giỏ hàng với các chi phí bổ sung. Mã của bạn với add_fee có ích:

function woo_add_cart_fee() {
    global $woocommerce;

    $extra_shipping_cost = 0;
    //Loop through the cart to find out the extra costs
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        //Get the product info
        $_product = $values['data'];

        //Get the custom field value
        $custom_shipping_cost = get_post_meta($_product->id, 'custom_shipping_cost', true);

        //Just for testing, you can remove this line
        $custom_shipping_cost = 10;

        //Adding together the extra costs
        $extra_shipping_cost = $extra_shipping_cost + $custom_shipping_cost;
    }

    //Lets check if we actually have a fee, then add it
    if ($extra_shipping_cost) {
        $woocommerce->cart->add_fee( __('Shipping Cost', 'woocommerce'), $extra_shipping_cost );
    }
}
add_action( 'woocommerce_before_calculate_totals', 'woo_add_cart_fee');

Đó là nó, nó sẽ làm việc sau này. Đảm bảo xóa các dòng Chỉ để thử nghiệm ... từ cả hai mã, tôi đã không tạo trường tùy chỉnh trên trang web của mình để thử nghiệm.


Xin chào passatgt - Tôi thực sự đánh giá cao sự giúp đỡ của bạn và ví dụ tuyệt vời với lời giải thích. Tôi sẽ thử những gì bạn đã đề nghị và nếu ok, có ổn không nếu tôi quay lại với bạn với bất kỳ trục trặc nào.
tonyf

Nếu nó liên quan đến câu hỏi ban đầu, chắc chắn :)
passatgt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.