我目前正在开发一个使用WooCommerce和各种扩展程序的网站(在撰写本文时所有这些都是最新的),以显示属于自定义帖子类型的一系列帖子。
这些帖子是由网站前端的网站用户使用定制的ACF表单创建的。前端表单在帖子类型中创建了一个新帖子" shwimmer-pools"以及两个新产品 - 一个用于订阅,一个用于预订。
这些新帖子的创建在我们的定制课ShwimmerFormHandler中处理。提交池创建表单时会触发此类。您可以在此Gist上查看课程: https://gist.github.com/mangopearuk/c10c52498547016c6aa23c6cca26fb43
我们面临的问题是订阅产品。该产品需要是一个可变订阅产品,因为池创建者可以设置6个不同的价格范围 - 成人,儿童,家庭和月份或年份订阅。
目前,我们已成功使用wp_insert_post()[第285行]创建新订阅产品,并且我们还使用wp_insert_post()[来自第478行]创建了每个变体。这些都已成功注册,并且有点工作。
我们遇到的问题是,当您查看前端订阅购买表单时,价格不正确,无论何时选择变体,都会显示错误消息:"抱歉,此产品不可用。请选择其他组合。"
按下"更新"订阅产品按预期工作在管理员。关于如何解决这个问题的任何想法?
谢谢,Andi
答案 0 :(得分:2)
您可能需要触发变量产品同步。
$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
元。
答案 1 :(得分:1)
感谢所有人的帮助。事实证明,它实际上很容易修复...
订阅插件不会显示_price
和_regular_price
元字段,但sync()
功能需要它们。一旦我将这两个附加字段添加到我的类中,sync()函数就可以工作。