2014-10-31 103 views
0

我已經使用下面的代碼來改變價格從functions.php。即使在購物車頁面上,它也在爲單一產品工作。我如何使用具有不同定價的不同產品的代碼?那可能嗎?Woocommerce多個產品與定製的價格從函數.php

'團隊'是一個分類學,'A-team','B-team'是條款。我將產品分配給'A隊'和'B隊'。

例如:

對於 'A-隊':PRODUCT_ID 14 = $ 200 15 = $ 600 17 = $ 800元; 'B-Team':product_id 14 = 100美元,15 = 300美元,17美元= 400美元;

原價:product_id 14 = 55美元,15 = 44美元,17美元= 88美元;

在分類學檔案頁:

如果 'A-隊' 歸檔產品應該顯示

[PRODUCT_ID 14 = $ 200 15 = $ 600 17 = $ 800元;]

如果' B-隊」歸檔產品應該顯示

[PRODUCT_ID 14 = $ 100 15 = $ 300 17 = $ 400;]

我的代碼:

function change_price($price, $productd){ 
    if($productd->id == 16): 
     return 160; 
    else: 
     return $price; 
    endif; 

add_filter('woocommerce_get_price','change_price', 10, 2); 
add_filter('woocommerce_get_regular_price','change_price', 10, 2); 
add_filter('woocommerce_get_sale_price','change_price', 10, 2); 

在此先感謝。

+0

可能重複[需要從functions.php的woocommerce店鋪頁面定製產品定價](http://stackoverflow.com/questions/26653946/need-custom-pricing -for-woocommerce-shop-page-products-from-functions-php) – helgatheviking 2014-10-31 12:50:29

+0

這不起作用。我改變了代碼的方式,問題解決了。即使代碼也在add_to_cart()中工作。現在我得到了不同團隊的不同定製定價(分類術語)。無論如何感謝您的支持。 – 2014-11-03 06:21:49

+0

請至少在您的線索上發佈您的答案,以便下一個具有相同問題的人可以找到它。 – helgatheviking 2014-11-03 10:08:38

回答

0

我改變了我的代碼,如下所示。它爲我工作。希望這可能有助於其他有問題的其他人。

`add_filter('woocommerce_get_price', function ($price, $productd) { 
     if($team_id) : 
      return get_post_meta($productd->id, 'tax_'.$team_id , true); 
     else: 
      return $price; 
     endif; 

    }, 10, 2);` 

即使在'Add-to-cart'功能也沒有問題。

感謝, 薩蒂亞

+0

我不是WordPress的匿名函數的粉絲。但我很好奇,'$ team_id'是如何定義的?根據你提供的代碼,你總是應該返回'$ price',而不是改變,因爲'$ team_id'永遠不會是真的。 – helgatheviking 2014-11-04 12:14:17

+0

爲了清楚理解目的,我給了$ team_id。我使用會話動態獲取價值。例如:在分類歸檔頁面中,我們有一個分類標識。我給了一個自定義字段並用'tax_'保存。我的定製價格爲每個產品的。使用get_post_meta函數,我在這裏調用這個值。它爲我工作。 – 2014-11-04 12:28:32

+0

好的。我只是指出未來的訪問者,這個代碼(現在)只會返回未經調整的價格。 – helgatheviking 2014-11-04 17:47:39

0

謝謝薩蒂亞和helgatheviking。我爲其設定貨幣(美元或歐元)的用戶創建了自定義字段。我爲每個產品創建了兩個自定義字段:「_price_usd」「_price_euro」,每個字段都包含產品的美元價格和歐元的歐洲價格。使用匿名函數解決了一些問題。現在我只需要根據用戶的貨幣輸入正確的後綴或前綴。這是我適應您的代碼的版本:

add_filter('woocommerce_get_price', function ($price, $productd) { 
     $logged_in_user_id = get_current_user_id(); 
     $user_currency = get_user_meta($logged_in_user_id, 'usd_euro', true); 
     $new_price = strtolower("_price_".$user_currency); 
     return get_post_meta($productd->id, $new_price, true); 

    }, 10, 2); 
相關問題