php 如何检查给定的ID是否用于产品变更?伍库默斯

wmvff8tz  于 2023-09-29  发布在  PHP
关注(0)|答案(5)|浏览(120)

我有一个数组,里面装满了我搜索的ID。

$ID = wc_get_product_id_by_sku($CodProduto);

然后初始化对象并设置当前数量的库存。

$Product = new WC_Product( $ID);
$return = wc_update_product_stock( $Product, $Stock);

到目前为止一切顺利!一切正常。我的问题是,当$ID是一个产品的变化,它不会初始化对象,并会给予一个错误。所以我初始化所有的ID:

$Product = new WC_Product_Variation( $ID );

然后我像以前一样更新股票。问题是,当一个产品没有变化,woocommerce把名称为(没有标题),但股票工作正常。
有没有一种方法可以在不初始化对象$Product的情况下检查ID是否用于变体???

093gszye

093gszye1#

您可以使用wc_get_product()来获取产品。

$product = wc_get_product($ID);

if( $product->is_type( 'simple' ) ){
    // simple product
} elseif( $product->is_type( 'variable' ) ){
   // variable product
}

这样,您将始终获得正确的产品类simple/variation。

nuypyhwy

nuypyhwy2#

你可以用get_parent_id()检查product是否是变量,如果是变量,你将得到父ID,如果不是,你将得到零。即

$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
}
wqnecbli

wqnecbli3#

我想你可以用另一种方法在数据库中搜索
例如,如果不确定此ID是用于产品还是用于变体产品,则可以用途:
( get_post( not_sure_ID ) )->post_parent;
作为子发布(变体产品),其父值不会为0。另一方面是0(产品)。

( get_post( not_sure_ID ) )->post_type;
如果此ID是Variation Product,则返回值应为product_variation

uemypmqf

uemypmqf4#

如果将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
}
krcsximq

krcsximq5#

$product = wc_get_product($product_id);
    // Check if it's product or variation
    if (is_a($product, 'WC_Product_Variation')) {
        $product_id = $product->get_parent_id();
    }

最好检查它是否真的是一个变量。

相关问题