首页 > 解决方案 > 通过 PHP 创建一个 WC_Product_Subscription_Variation 并设置所需的帖子元(周期和周期间隔)

问题描述

我正在尝试通过 PHP 创建一个 WC_Product_Variable_Subscription 和连接的 WC_Product_Subscription_Variation(s)

创建WC_Product_VariableWC_Product_Variation似乎很简单(我创建的类继承自该类),但我无法设置所需的

间隔、周期和长度

属性(例如,订阅价格为每月 200 美元,为期 6 个月。)

创建 新的 WC_Product_Variation 和连接的新 WC_Product_Subscription_Variation(s) 时

是不是像设置post meta一样简单

[_subscription_period] => Array
    (
        [0] => month
    )

[_subscription_period_interval] => Array
    (
        [0] => 1
    )

[_subscription_length] => Array
    (
        [0] => 3
    )

创建变体后手动?有没有人有一个工作代码示例?

感谢任何可以为我指明正确方向的人!

米。

标签: phpwoocommercewoocommerce-subscriptions

解决方案


在发布这个问题之前,我应该再次更详细地查看底层代码 - 对任何真正花时间处理这个问题的人感到抱歉。

关于实际答案:

如果已创建 WC_Product_Variable_Subscription(不是订阅,而是产品类型 - 命名可能有点混乱)并且已创建/连接所需的变体,则可以通过发布元数据更新产品变体。

例如

update_post_meta($variation->get_id(), '_subscription_period', 'week');
update_post_meta($variation->get_id(), '_subscription_period_interval', 1);
update_post_meta($variation->get_id(), '_subscription_length', 4);

作为提示:如果您搜索创建变体的方法,您可以查看 data_store 的createAllProductVariations方法

例如

$data_store = $product->get_data_store();    
$data_store->create_all_product_variations($product, $maxVariations);
$data_store->sort_all_product_variations($product->get_id());

推荐阅读