我们有一个使用 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>";
}
在我能够输出和修改帖子元之前,我没有进一步研究代码。
答案 0 :(得分:0)
这可以通过查看订单并添加元行来完成:
$order = wc_get_order();
$order->update_meta_data( '_subscription_renewal', $subscription_id );
$order->save();
$subscription_id
是您希望将订单绑定到的订阅 ID。