簡體   English   中英

Woocommerce 2.0+每數量的折扣價和產品頁面上的變化

[英]Woocommerce 2.0+ discount price per quantity and variation on product page

在最新版本的Woocommerce中使用Mystile主題,我重寫了variant.php以便根據選擇的數量和變化顯示折扣價格。 我有3個屬性:“ marquage”,“ couleurs”和“ couleursàmarquer”。

這是我的php,在woocommerce_before_add_to_cart_form之后添加。

希望您的眼睛不會流血,因為我在網站上工作不到一年(我是\\ o /之前對打印機一無所知的打印機)。

> $available_variations = $product->get_available_variations();
> $variation_id=$available_variations[0]['variation_id']; 
> $variable_product1= new WC_Product_Variation( $variation_id );
> $regular_price1 = $variable_product1 ->regular_price;
> $sales_price1 = $variable_product1 ->sale_price;
> $variation_id=$available_variations[1]['variation_id']; 
> $variable_product2= new WC_Product_Variation( $variation_id );
> $regular_price2 = $variable_product2 ->regular_price;
> $sales_price2 = $variable_product2 ->sale_price;
> $variation_id=$available_variations[2]['variation_id']; 
> $variable_product3= new WC_Product_Variation( $variation_id );
> $regular_price3 = $variable_product3 ->regular_price;
> $sales_price3 = $variable_product3 ->sale_price;
> $variation_id=$available_variations[3]['variation_id']; 
> $variable_product4= new WC_Product_Variation( $variation_id );
> $regular_price4 = $variable_product4 ->regular_price;
> $sales_price4 = $variable_product4 ->sale_price;
> $variation_id=$available_variations[4]['variation_id']; 
> $variable_product5= new WC_Product_Variation( $variation_id );
> $regular_price5 = $variable_product5 ->regular_price;
> $sales_price5 = $variable_product5 ->sale_price;
> $variation_id=$available_variations[5]['variation_id']; 
> $variable_product6= new WC_Product_Variation( $variation_id );
> $regular_price6 = $variable_product6 ->regular_price;
> $sales_price6 = $variable_product6 ->sale_price;
> $variations_prices = array($available_variations[0][attributes][attribute_pa_couleurs] => $regular_price1, $available_variations[1][attributes][attribute_pa_couleurs] => $regular_price2, $available_variations[2][attributes][attribute_pa_couleurs] => $regular_price3, $available_variations[3][attributes][attribute_pa_couleurs] => $regular_price4, $available_variations[4][attributes][attribute_pa_couleurs] => $regular_price5, $available_variations[5][attributes][attribute_pa_couleurs] => $regular_price6);

是的,這很好。 這些行使我能夠捕獲變量的變異價格,僅此刻才適用於Couleurs屬性。 我可以將其添加到functions.php中,但是我想獲取我的json_encode($ variations_prices); 在jQuery中。 這就是我在此腳本中所做的,只是在自定義php之后,仍在variant.php中。

單詞SOME_BAD_PHP表示打開或結束php,is_less_than表示<(很抱歉,您實際上在Stackoverflow上閱讀了我的第一篇文章:-))

>     
>             $(document).ready(function(){ 
>     function calculate_price(){
>     var my_array = SOME_BAD_PHP echo json_encode($variations_prices); END_SOME_BAD_PHP;
>     var qty_prod = $('.qty').val();
>     var coul = $('#pa_couleurs').val();
>     var marquage = $('#pa_marquage').val(); 
>     var couleurs_marquage = $('#pa_couleurs-a-marquer').val();
>     if(jQuery.inArray($('select#pa_couleurs option:selected').val(), my_array)!== -1){ 
>     }else {
>     var price_in_array = my_array[$('select#pa_couleurs option:selected').val()];
>     var price_coul_min = price_in_array;}
>           if(qty_prod is_less_than 50) { 
>               var total_to_pay = price_coul_min * qty_prod;}
>           else if(qty_prod >= 50) { 
>               var price_redux = price_coul_min - 5 / 100;
>               var total_to_pay = price_redux * qty_prod;}
>     if (total_to_pay > 0){
>     $('#price_me').html('Le prix est de ' + total_to_pay + ' euros pour la sélection'); 
>     }else{}
>     };

最后,我在產品頁面中添加了一個簡單的<span id="price_me"></span>

這些代碼行在具有“ price_me” id的跨度中顯示取決於選擇的變化和數量的折扣價格。 正常工作,不幸的是,這不好,可能包含錯誤。

我希望我的代碼(在本地工作)可以幫助其他人,我只想正確地做到這一點:-D但是沒有循環,並且jquery中有一些錯誤的php ...

有沒有一種方法可以讓php函數將我的json_encode($ array)返回到另一個函數,從而將jQuery腳本添加到woocommerce中(例如,使用wp_enqueue_script)? (和往常一樣,我很清楚:-D)

我加入了覆蓋Ajax價格的JS腳本,然后創建了覆蓋woocommerce購物車的自定義函數。 Woocommerce購物車覆蓋代碼可以在我自己的網站上看到,js文件取決於您所銷售的商品。 多虧了朋友,兩者都具有魅力。

暫無
暫無

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

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