2017-10-18 41 views
1

在我的WooCommerce商店中,我有簡單的產品和可變的產品,簡單的產品和變體都具有「pre_order」的元值,即「是/否」。如何更改WooCommerce中特定變體的添加到購物車文本?

如果在後端設置此選項,我希望添加到購物車按鈕說'預購',而不是'添加到購物車'。

對於簡單的產品,我有沒有問題,改變這種使用過濾器或編輯文件模板,變化似乎儘管有很多麻煩......

當選擇的變化選項那麼價格和SKU的更新,在這個過程中我也想要檢查上面提到的元值,並且如果這種變化具有「是」的元值預定順序,那麼我也想改變按鈕文本,但是我找不到這樣做的方式!

回答

0

WooCommerce提供了一個名爲variation_id的隱藏輸入字段。只要變化發生變化,更新後的變體編號就會保存在此隱藏的輸入字段中。所以首先你必須檢測使用jQuery時,這個輸入字段的值更新,當檢測到火災自己的ajax請求,並檢查這種變化是否分配給預購或如果是的話,現在你可以改變文本添加到購物車後阿賈克斯的迴應是成功。

0

WooCommerce在.variations_form元素中存儲名爲data-product_variations的數據屬性中的變體詳細信息(如價格,尺寸,重量等)。此數據用於顯示用戶選擇特定變體時的價格和其他詳細信息。

add_filter('woocommerce_available_variation', 'vna_add_variation_meta'); 
function vna_add_variation_meta($dataattr, $product, $variation) { 
    $dataattr['pre_order'] = get_post_meta($variation->get_id(), 'pre_order', true); 
    return $dataattr; 
} 

可以在class-wc-product-variable.php文件中找到有關woocommerce_available_variation更多細節:您可以使用過濾器woocommerce_available_variation像這個數據屬性添加您的meta值。

一旦獲得了DOM元素中的元值,就可以使用以下事件知道用戶何時選擇了變體。

$(".single_variation_wrap").on("show_variation", function (event, variation) { 
    // Fired when the user selects all the required dropdowns/attributes 
    // and a final variation is selected/shown 
    // Here you will need to get the value of 'pre_order' from the variation object 
    // something like: variation.pre_order 
    // and take appropriate action 
}); 

請注意:代碼是未經測試這樣可能會出現一些錯別字;)

相關問題