簡體   English   中英

通過自定義字段更改購物車中的產品價格,Woocommerce

[英]Change product price in Cart by custom field, Woocommerce

我目前遇到一個問題,我必須在購物車中添加帶有復選框的選項(對於購物車中的每個項目),這將使用自定義屬性中的一個更改項目的價格。

這是它的一個說明(我已經創建了自定義字段,只需單擊“更新購物車”按鈕時需要價格更新功能)

在此處輸入圖片說明

為每個項目顯示復選框的代碼(/woocommerce/templates/cart/cart.php):

<td class="product-url">
    <?php
        $html = sprintf( '<div class="lorem"><input type="checkbox" name="cart[%s][lorem]" value="%s" size="4"  class="input-text url text" /> Lorem price</div>', $cart_item_key, esc_attr( $values['url'] ) );
        echo $html;
    ?> 
</td>

在這里,我假設lorem price存儲在與 meta_key your_custom_meta_field關聯的自定義元字段中

在主題的function.php文件中使用以下代碼

add_action( 'woocommerce_before_calculate_totals', 'my_custom_calculate_totals' );
function my_custom_calculate_totals( $cart ) {
    if ( ! empty( $cart->cart_contents ) ) {
        $lorem_price = array();
        if ( ! empty( $_REQUEST['cart'] ) ) {      // check if any of the checkboxes is checked
            WC()->session->set( 'my_lorem_price', $_REQUEST['cart'] );      // set all checkboxes information in session
            $lorem_price = $_REQUEST['cart'];
        }
        if ( empty( $lorem_price ) ) {
            $lorem_price = WC()->session->get( 'my_lorem_price' );      // fetch all checkboxes information from session
        }
        if ( empty( $lorem_price ) ) {
            return;     // don't do anything if any of the checkboxes is not checked
        }
        foreach ( $cart->cart_contents as $cart_item_key => $cart_item ) {
            if ( isset( $lorem_price[ $cart_item_key ]['lorem'] ) ) {
                // Use following line if lorem price is set at variation level
                $id = ( ! empty( $cart_item['variation_id'] ) && $cart_item['variation_id'] > 0 ) ? $cart_item['variation_id'] : $cart_item['product_id'];
                // Use following line if lorem price is set at product level
                // $id = $cart_item['product_id'];
                $new_price = get_post_meta( $id, 'your_custom_meta_field', true );      // fetch price from custom field
                $cart_item['data']->price = $new_price;
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM