Php 签出后创建一个cron,以便在特定日期暂停Woocommerce订阅
我有一个Woocommerce订阅签出,在订单中只有一个订阅。一个用户只能有一个订阅,并且在一次签出中只能订购一个订阅 我需要能够设置一个CRON作业,以便在特定时间(由用户在签出内设置)将订阅状态更改为“保留”,然后设置另一个在日期之后执行的CRON,以将订阅恢复为“活动”。这样做的原因是,在结账过程中,用户可以选择某个日期,但他们不想取消订阅(只需在该周暂停订阅) 我可以在签出期间计算出日期部分,但我似乎无法让CRON在运行时更新订阅状态 我在Php 签出后创建一个cron,以便在特定日期暂停Woocommerce订阅,php,wordpress,woocommerce,cron,Php,Wordpress,Woocommerce,Cron,我有一个Woocommerce订阅签出,在订单中只有一个订阅。一个用户只能有一个订阅,并且在一次签出中只能订购一个订阅 我需要能够设置一个CRON作业,以便在特定时间(由用户在签出内设置)将订阅状态更改为“保留”,然后设置另一个在日期之后执行的CRON,以将订阅恢复为“活动”。这样做的原因是,在结账过程中,用户可以选择某个日期,但他们不想取消订阅(只需在该周暂停订阅) 我可以在签出期间计算出日期部分,但我似乎无法让CRON在运行时更新订阅状态 我在woocommerce\u checkout\u
woocommerce\u checkout\u subscription\u创建的操作中创建了cron,如下所示:
add_action( 'woocommerce_checkout_subscription_created',
'checkout_custom_fields_update_subscription_meta', 10, 3 );
function checkout_custom_fields_update_subscription_meta( $subscription ) {
wp_schedule_single_event( strtotime('+1 day', time()), 'pause_the_woo_subscription', array($subscription) );
}
然后是函数:
function pause_the_woo_subscription($subscription) {
$subscription->update_status( 'on-hold' );
}
function pause_the_woo_subscription($subscription, $subscription_id) {
foreach( $subscription as $subscription_id => $subscriptio ){
$subscriptio->update_status( 'on-hold' );
}
}
但当cron执行时,它似乎不起作用。我还尝试在函数中循环订阅:
function pause_the_woo_subscription($subscription) {
$subscription->update_status( 'on-hold' );
}
function pause_the_woo_subscription($subscription, $subscription_id) {
foreach( $subscription as $subscription_id => $subscriptio ){
$subscriptio->update_status( 'on-hold' );
}
}
这也没用。我哪里做错了
编辑:
我不明白为什么这不起作用:
add_action( 'woocommerce_checkout_subscription_created', 'checkout_custom_fields_update_subscription_meta', 10, 3 );
function checkout_custom_fields_update_subscription_meta( $subscription, $order, $recurring_cart ) {
$orderID = $order->get_id();
wp_schedule_single_event( strtotime('+1 minute', time()), 'pause_the_woo_subscription', array($orderID) );
}
我将订单ID作为参数传递到pause\u\u-woo\u订阅函数中,创建一个CRON来运行该函数,然后从该订单循环订阅并暂停它们
但它在CRON中不起作用