我想在创建初始(第一个)订单后更改活动订阅的下一个付款日期。
当前代码不起作用。为什么我错过了什么
//fires when new order payment is complete (NOT RENEWAL but original order!)
add_action('woocommerce_payment_complete', 'fm_upate_next_payment_datetime');
function fm_upate_next_payment_datetime ( $order_id ) {
if (WC_Subscriptions_Order::order_contains_subscription( $order_id ) == false) return;
$subscription_key = WC_Subscriptions_Manager::get_subscription_key( $order_id, $product_id
= '');
//hard code next payment date...(must be in future)
$next_payment = date( 'Y-m-d H:i:s', '2016-05-20 00:10:10' );
//set the new payment date
WC_Subscriptions_Manager::set_next_payment_date( $subscription_key, $user_id = '', $next_payment );
}
6条答案
按热度按时间bsxbgnwa1#
你说什么,我们也需要设定一个开始日期!如果没有它,它将被抛出一个错误。它是这样工作的:
sg2wtvxw2#
我的工作解决方案是(另见https://docs.woocommerce.com/document/subscriptions/develop/functions/#section-4):
ecbunoof3#
我认为这是不起作用的,因为您使用空变量
$product_id
调用$subscription_key
。在您的函数中,使用此代码,您没有
$product_id
的值。应该通过引用或从函数中提取来传递它。
imzjd6km4#
Woocommerce订阅更改了下一个付款日期3天前:
9cbw7uwe5#
请不要在
update_post_meta()
中使用4个值。通过更改以下内容仅使用3个值:
致:
a0zr77ik6#
这可能对某人有帮助。如果要更改特定产品的订阅的下次付款日期,请执行以下代码:
参考:https://stackoverflow.com/a/67420195/8498688
要更改购物车和结帐页面上的首次续订日期,请执行以下步骤:
1-移除本机过滤器钩子
2-添加自定义回调