将标准 Woocommerce 订单与 Woocommerce 订阅联系起来

时间:2021-03-18 14:08:30

标签: php wordpress woocommerce

我们有一个使用 Woocommerce 而不是 Woocommerce 订阅的旧系统,我们已经迁移到 Woocommerce 订阅,但我们有大量标准的 Woo 订单,我们希望将这些订单与订阅相关联。

通过数据库,如果我在 postmeta 表中找到订阅,我可以手动更改 _subscription_renewal_order_ids_cache 以包含订单 ID,使其变为以下内容:

a:2:{
  i:0;i:143052;
  i:1;i:143049;
}

(我添加了第二行)

如果我添加带有订阅 ID 的元 _subscription_renewal,然后将订单与订阅联系起来,则在订单本身上。

这可以以编程方式完成吗?我已经完成了以下操作,但它没有输出元数据(因此我无法修改它)。

global $wpdb;

// get all subscriptions IDS
$subscriptions_ids = $wpdb->get_col("
    SELECT ID  FROM {$wpdb->prefix}posts
    WHERE post_type LIKE 'shop_subscription'
");

// Loop through subscriptions Ids
foreach( $subscriptions_ids as $subscription ){
    // Get an instance of the WC_Subscription object
    $subscription = new WC_Subscription( $subscription );

        $subscription_id = $subscription->get_id();
        $subscription_email = $subscription->get_billing_email();

        echo $subscription->get_meta('_subscription_renewal_order_ids_cache');

        echo "<pre>";
        print_r( $subscription );
        echo "</pre>";
}

在我能够输出和修改帖子元之前,我没有进一步研究代码。

1 个答案:

答案 0 :(得分:0)

这可以通过查看订单并添加元行来完成:

$order = wc_get_order();
$order->update_meta_data( '_subscription_renewal', $subscription_id );
$order->save();

$subscription_id 是您希望将订单绑定到的订阅 ID。