当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce 3中更改现有产品的产品类型

邢灿
2023-03-14

我需要在我的子主题中使用函数创建后更改woocommerce产品类型我尝试了以下方法:

 wp_set_object_terms($product_id, 'variable', 'product_type', true);

我的方法在创建后被触发,但类型仍然不变?

共有1个答案

陆涵畅
2023-03-14

从WooCommerce 3开始,要更改现有产品的产品类型,可以使用以下方法

/**
 * Change product type.
 *
 * @param int     $product_id       - The product id.
 * @param string  $new_product_type - The new product type
 */
 
// Get the correct product classname from the new product type
$product_classname = WC_Product_Factory::get_product_classname( $product_id, $new_product_type );

// Get the new product object from the correct classname
$new_product       = new $product_classname( $product_id );

// Save product to database and sync caches
$new_product->save();

测试并在所有情况下都能正常工作,因为wp\u set\u object\u terms(),由于许多原因无法正常工作,请参阅此较早的相关线程。新产品将保留其所有现有数据。

有用的参考资料:WC\u Meta\u Box\u产品数据save()方法

 类似资料:
  • 我在一个使用工具集类型生成“产品”帖子类型和“产品类别”分类法(产品类别)的网站上工作。现在我正在将WooCommerce添加到该站点,需要将“产品类别”分类设置为产品的WooCommerce分类,即Product_cat。WooCommerce已经选择了产品帖子类型,所有产品都出现在WooCommerce产品中。我只需要让分类也出现在那里。 我尝试使用一个名为Taxonomy Switcher的

  • 我有一个名为“产品类型”的WooCommerce产品类别,我试图列出该类别下的所有类别,但不是这些类别的子类别。例如,我有: 产品类型 碳化物米尔斯 钓鱼工具 儿童类别 我希望它列出“电石磨坊”和“打捞工具”,但不是“儿童类别”。 这是我的代码: 但它仍然返回“儿童类别”。我不知道为什么将深度限制为“1”并将“include_children”设置为“false”不能解决这个问题。

  • 在WooCommerce中,我试图使用以下代码将产品类别转换为产品属性: Is的部分工作原理与我在后端产品中需要看到的一样

  • 我有Category mongoose文档,我想更新他的产品。每次更新产品时,只需重写它们,而我只有最后一个put记录。我如何填充产品?

  • 我发现所有产品的数量不等于< code>home类别中的产品数量。这是因为在添加产品时,并不总是选择最大的父类别。因此,有些产品属于< code>home,而有些则不属于。 虽然我需要为类别<code>主页<code>页面显示正确数量的产品,但我在数据库中查找了包含类别的列,但在<code>ps_product</code>或<code>ps_product_lang</code>中未找到它们。

  • 我正在使用此代码添加自定义属性 这个代码的结果我得到了添加只是产品属性名称没有术语值... 我找了很多,但没有得到任何答案。