在最新版本的 Woocommerce 中使用 Mystile 主题,我覆盖了variation.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 ->sales_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 ->sales_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 ->sales_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 ->sales_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 ->sales_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 ->sales_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] => $常规价格6);
对,这很好用。这些行允许我捕捉变量中的价格变化,目前仅适用于 Couleurs 属性。我可以将它添加到functions.php,但我想得到我的json_encode($variations_prices); 在jQuery中。这就是我在这个脚本中所做的,就在我的自定义 php 之后,仍然在variation.php 中。
单词 SOME_BAD_PHP 表示打开或结束 php,is_less_than 表示 <(抱歉,您实际上是在阅读我在 Stackoverflow 中的第一篇文章 :-))
> > $(文档).ready(函数(){ > 函数计算价格(){ > 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){ > }否则{ > 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;} > 否则如果(qty_prod >= 50){ > var price_redux = price_coul_min - 5 / 100; > var total_to_pay = price_redux * qty_prod;} > 如果(total_to_pay > 0){ > $('#price_me').html('Le prix est de ' + total_to_pay + ' euros pour la sélection'); > }其他{} > };
<span id="price_me"></span>
最后我在我的产品页面中添加了一个简单的。
这些代码行显示折扣价格取决于选择的变化和数量,在具有“price_me”id 的跨度中。工作正常,不幸的是这并不好,它可能包含错误。
我希望我的代码(适用于本地)对其他人有所帮助,我只想正确地做到这一点:-D 但是没有循环,并且 jquery 中有一些糟糕的 php ......
有没有办法让 php 函数将我的 json_encode($array) 返回到另一个函数,将我的 jquery 脚本添加到 woocommerce(例如使用 wp_enqueue_script)?(像往常一样,我心里很清楚:-D)