【问题标题】:Issues programmatically creating variable subscription product in WooCommerce在 WooCommerce 中以编程方式创建可变订阅产品的问题
【发布时间】:2016-07-14 15:59:14
【问题描述】:

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

这些帖子由网站用户在网站前端使用定制的 ACF 表单创建。前端表单在帖子类型“shwimmer-pools”中创建了一个新帖子以及两个新产品 - 一个用于订阅,一个用于预订。

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

我们面临的问题是订阅产品。该产品需要是可变订阅产品,因为池创建者可以设置 6 个不同的价格范围 - 成人、儿童、家庭和月或年订阅。

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

我们面临的问题是,当您查看前端订阅购买表单时,价格不正确,并且每当您选择变体时,都会出现错误消息:“抱歉,此产品不可用。请选择其他组合。”

在管理员中按“更新”后,订阅产品按预期工作。有关如何解决此问题的任何想法?

谢谢,安迪

【问题讨论】:

  • 是的,这就是在类中创建订阅 ID 的方式。

标签: php wordpress woocommerce advanced-custom-fields subscriptions


【解决方案1】:

您可能需要触发可变产品同步。

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

此外,正如您所发现的(并在此处添加以确保完整性),同步功能在 _price 元数据的基础上工作。 _regular_price 和 _sale_price 也会进行比较。订阅将其_subscription_price 设置为_regular_price,然后_price 是_regular_price 或_sale_price,具体取决于该项目是否在销售。因此,如果您以编程方式创建订阅,则需要确保设置 _price 和 _regular_price 元数据。

【讨论】:

  • 不幸的是,这不起作用。我也试过:$product->sync($subscription_id); - 都没有用。
  • 对不起,我之前看到过类似的问题,并认为就是这样。您的所有变体都有价格吗?
  • 是的,所有变体数据都存储在正确的字段中 - 在您手动编辑帖子并更新之前,它不会显示在前端。
  • 感谢您添加额外信息 - 这非常有帮助!
【解决方案2】:

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

订阅插件不显示 _price 和 _regular_price 元字段,但 sync() 函数需要它们。一旦我将这两个附加字段添加到我的类中,sync() 函数就起作用了。

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 2015-12-09
    • 2018-08-06
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    相关资源
    最近更新 更多