簡體   English   中英

如何檢查給定的 ID 是否用於產品變體? 伍科默斯

[英]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 將名稱設置為(無標題),但庫存正常。

有沒有辦法在不初始化 object $Product 的情況下檢查 ID 是否用於變體??? 在此處輸入圖像描述

您可以使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM