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

在WooCommerce中以编程方式创建可变订阅产品的问题

郦何平
2023-03-14

我目前正在开发一个网站,它使用WooCommerce和各种扩展(在撰写本文时所有这些都是最新的)来显示一系列属于自定义帖子类型的帖子。

这些帖子是由网站用户在网站前端使用定制的ACF表单创建的。前端表单在帖子类型“shwimmer池”中创建了一个新帖子,旁边还有两个新产品——一个用于订阅,一个用于预订。

这些新帖子的创建在我们的定制类ShwimmerFormHandler中处理。提交池创建表单时激发此类。您可以按以下要点查看课程:https://gist.github.com/mangopearuk/c10c52498547016c6aa23c6cca26fb43

我们面临的问题是订阅产品。该产品需要是一个可变的订阅产品,因为池创建者可以设置6个不同的价格区间——成人、儿童、家庭

目前,我们正在使用wp_insert_post()[行285]成功创建新的订阅产品,并且我们还使用第478行中的wp_insert_post()[创建每个变体]。这些都被成功注册,并有点工作。

我们面临的问题是,当您查看html" target="_blank">前端订阅购买表格时,价格不正确,每当您选择一个变体时,就会出现错误消息:“抱歉,此产品不可用。请选择不同的组合。"

在管理员中按“更新”后,订阅产品将按预期工作。关于如何解决这个问题有什么想法吗?

谢谢安迪

共有2个答案

蔚弘量
2023-03-14

谢谢大家的帮助。事实证明,它实际上很容易修复。。。

订阅插件不显示_price_regular_price元字段,但是sync()函数需要它们。一旦我将这两个额外的字段添加到我的类中,sync()函数就可以工作了。

隆选
2023-03-14

您可能需要触发变量product sync。

$subscription_id = wp_insert_post( $args );
$product = wc_get_product( $subscription_id );
$product->variable_product_sync();

此外,正如您所发现的(为了完整起见,这里添加了同步功能),同步功能在\u price元中起作用<代码>>还比较了常规价格和销售价格。订阅将其\u subscription\u price设置为\u regular\u price,然后\u price\u regular\u price还是\u sale\u price,具体取决于物品是否在销售。因此,如果以编程方式创建订阅,则需要确保设置\u price\u regular\u price元。

 类似资料:
  • 我试图以编程方式创建一个订单。使用非常简单: 这符合预期,并且为ID为100的简单产品创建了正确数量的订单。 然而,如果我尝试用一个变体来实现这一点,它的行为似乎并不正确。经过多次尝试和错误,我以这种方式完成了工作: 然而,尽管它确实创建了具有正确产品和正确变化ID的订单,订单的总数总是0(巧合的是,这是第一个变化的价格)。 最初我尝试的是

  • 问题内容: 我想以编程方式创建具有两个新的Variant属性的变量产品(“父”产品)-所有这些都来自WordPress插件(因此,无需向API发送HTTP请求)。 这两个变量属性也应该动态创建。 如何才能做到这一点 ? (使用WooCommerce版本3) 更新:我已经在此上编写了更多行代码,并使用wooCommerce对象尝试了许多解决方案,并使用WordPress数据库在数据库中添加了有关术语

  • 如何从插件为WooCommerce创建属性?我只发现: 从这个问题 但这种方法需要某些产品的id。我需要生成一些未附加到任何产品的属性。

  • 问题内容: 我最困难的时间是在WooCommerce中以编程方式创建订单。我正在使用下面的代码,是否正在创建订单,但是我无法获得客户信息或添加到订单的产品线项目。创建的新订单只是访客,没有任何物品,用户信息等。 问题似乎是,一旦创建了订单对象,尝试向订单中添加数据时就会失败。 这是我在日志中遇到的错误: 任何帮助,将不胜感激! 问题答案: 问题出在您的动作挂钩上。使用以下钩子: 确保给定的产品ID

  • 在WooCommerce中,我试图找到一种类似于方法或的方法,例如,设置产品类型,如简单或变化。 实际上,我使用的是对象如下: 如果用户选中“简单产品”或“可变产品”,我如何设置产品类型? 任何帮助都很感激。

  • 我想以编程方式创建一个带有两个新变量属性的变量产品(“父”产品)——所有这些都来自WordPress插件(因此没有对API的HTTP请求)。 这两个变量属性也应该动态创建。 这怎么能做到呢? (适用于WooCommerce第3版) 更新:我已经写了更多我希望的代码,并尝试了很多方法来解决它,使用wooCommerce对象,并使用WordPress数据库对象在数据库中添加了关于术语、termmeta