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

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

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

  1. $ID = wc_get_product_id_by_sku($CodProduto);

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

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

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

  1. $Product = new WC_Product_Variation( $ID );

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

093gszye

093gszye1#

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

  1. $product = wc_get_product($ID);
  2. if( $product->is_type( 'simple' ) ){
  3. // simple product
  4. } elseif( $product->is_type( 'variable' ) ){
  5. // variable product
  6. }

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

nuypyhwy

nuypyhwy2#

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

  1. $product=wc_get_product($product_id);
  2. $product_parent=$product->get_parent_id();
  3. if($product_parent==0){
  4. //what you want to do with non product that is not a variation
  5. }else{
  6. //what you want to do with product variation
  7. }
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'。这对我很有效。

  1. $post_type = get_post_type($ID);
  2. if( $post_type == 'product' ){
  3. // product
  4. } elseif( $post_type == 'product_variation' ){
  5. // product variation
  6. }
krcsximq

krcsximq5#

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

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

相关问题