2017-03-07 51 views
1

我有一個自定義的WooCommerce商店,我希望能夠根據條件變灰某些產品變體,但我不確定代碼中的位置。根據條件灰掉Woocommerce產品變體?

  • 我有兩個價格爲每個項目,一個是成員價格,一個是零售價格。
  • 我希望每個人都能看到每個變化,但無法選擇對他們不可用的變化,以便非成員可以看到零售價格,但無法選擇它,反之亦然。
  • 我想要的其他自定義如下:我希望能夠只允許會員以每月會員價格購買5件產品,然後它將切換到零售價格,所以我需要能夠灰色根據特定條件爲會員提供會員價格。

任何人都可以指向文件/鉤子/動作,我可以在變化輸出中注入一些自定義代碼,這樣我就可以做到這一點嗎?

謝謝。

回答

1

對於您的兩個問題,您可以以不同的方式使用woocommerce_add_to_cart_validation過濾器掛鉤。在一些基於用戶角色和現有功能參數的條件下,客戶將能夠選擇您的產品的變體,但如果他不被允許,將無法將其添加到購物車。你甚至可以顯示通知時不允許當客戶嘗試添加的東西...

add_filter('woocommerce_add_to_cart_validation', 'custom_add_to_cart_validation', 10, 5); 
function custom_add_to_cart_validation($passed, $product_id, $quantity, $variation_id, $variations) { 

    // Your code goes here 

    // If $passed is set to "false", the product is not added 
    // $passed = false; 

    return $passed; 
} 

爲了您的最後一個問題,你將需要一個月的成員設置/更新有關的5種產品的一些自定義用戶的元數據,每次他們下訂單。你可以使用這個woocommerce_thankyouwoocommerce_order_status_completed動作掛鉤在用戶元數據中設置自定義數據。然後,您將能夠檢查此數據是否啓用或禁用了過濾器掛鉤中的正確產品變體。要完成,如果你真的想要變灰一些變化,你將不得不使用JavaScript/jQuery,但是會變得非常困難,因爲在產品變體上已經有很多javascript/Ajax WooCommerce事件,會與你發生衝突。但在WooCommerce中,一切都可能取決於時間和技能......