[英]How to upsell product in woocoomerce based on last product's variation
[英]How to check if a given ID is for a product variation? woocoomerce
我有一個充滿產品 SKU 的數組,我在其中搜索 ID。
$ID = wc_get_product_id_by_sku($CodProduto);
然后我初始化 object 並將庫存設置為當前數量。
$Product = new WC_Product( $ID);
$return = wc_update_product_stock( $Product, $Stock);
到目前為止,一切都很好。 一切正常。 我的問題是當$ID
用於產品變體時,它不會初始化 object 並會給出錯誤。 所以我用以下方式初始化所有ID:
$Product = new WC_Product_Variation( $ID );
然后我像以前一樣更新股票。 問題是,當產品沒有變化時,woocommerce 將名稱設置為(無標題),但庫存正常。
您可以使用 wc_get_product() 獲取產品。
$product = wc_get_product($ID);
if( $product->is_type( 'simple' ) ){
// simple product
} elseif( $product->is_type( 'variable' ) ){
// variable product
}
這樣,您將始終獲得正確的產品 class 簡單/變化。
我認為您可以通過在數據庫中搜索來使用另一種方法
例如,如果不確定此 ID 是用於 Product 還是 Variation Product,您可以使用:
( get_post( not_sure_ID ) )->post_parent;
作為子帖子(變體產品),其父值不會為 0。另一方面是 0(產品)。
或者
( get_post( not_sure_ID ) )->post_type;
如果此 ID 用於變體產品,則返回值應為product_variation
您可以使用 get_parent_id() 檢查產品是否是變體,如果是變體,您將獲得父 ID,如果不是,您將獲得零。 IE
$product=wc_get_product($product_id);
$product_parent=$product->get_parent_id();
if($product_parent==0){
//what you want to do with non product that is not a variation
}else{
//what you want to do with product variation
}
如果您將 ID 輸入 get_post_type(),它應該返回“product”或“product_variation”。 這對我有用。
$post_type = get_post_type($ID);
if( $post_type == 'product' ){
// product
} elseif( $post_type == 'product_variation' ){
// product variation
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.