90 天后隐藏 WooCommerce 订阅 'cancel' 按钮
Hide WooCommerce Subscriptions 'cancel' button after 90 days
我正在尝试根据订阅开始日期 show/hide 'My Account' 中订阅详细信息中的 'Cancel' 按钮。但是我发现间隔没有按预期工作。我试过几个月 (m) 并注意到它计算了整个月,而不是从那个月内的特定日期开始。因此,我正在尝试 (d) 天,但这些天数也不是从订阅开始日期算起的。
例如,2021 年 12 月 14 日的订阅日期已超过 90 天,但取消按钮仍然显示。
这是我使用的代码:
function remove_cancel_button( $actions, $subscription_id ) {
// Gets the subscription object on subscription id
$subscription = new WC_Subscription( $subscription_id );
// Get last payment date from subscription object, uses the sites timezone setting
$date_subscription_created = $subscription->get_date( 'start', 'site' );
$date_subscription_created = new DateTime( $date_subscription_created );
// The current date/time, uses the sites timezone setting
$today = new DateTime( current_time('mysql') );
// Get the difference in date
$interval = $today->diff( $date_subscription_created );
// Check if interval is more than * days
if( $interval->d > 90 ){
unset( $actions['cancel'] );
}
// Return the actions
return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'remove_cancel_button', 100, 2);
原始出处:
上面的代码设置为读取订阅'start'日期,间隔设置为从开始日期起超过90天,但是它不起作用,任何建议将不胜感激!
尝试为过滤器设置较低的优先级,例如 9
add_filter( 'wcs_view_subscription_actions', 'remove_cancel_button', 9, 2);
function remove_cancel_button($actions, $subscription_id) {
// Gets the subscription object on subscription id
$subscription = new WC_Subscription($subscription_id);
$subscription_start_date = $subscription->get_date('start_date');
$subscription_start_date_obj = new \DateTime($subscription_start_date);
$now = new \DateTime();
if ($subscription_start_date_obj->diff($now)->days > 90) {
unset($actions['cancel']);
}
return $actions;
}
add_filter('wcs_view_subscription_actions', 'remove_cancel_button', 10, 2);
测试正常
我正在尝试根据订阅开始日期 show/hide 'My Account' 中订阅详细信息中的 'Cancel' 按钮。但是我发现间隔没有按预期工作。我试过几个月 (m) 并注意到它计算了整个月,而不是从那个月内的特定日期开始。因此,我正在尝试 (d) 天,但这些天数也不是从订阅开始日期算起的。
例如,2021 年 12 月 14 日的订阅日期已超过 90 天,但取消按钮仍然显示。
这是我使用的代码:
function remove_cancel_button( $actions, $subscription_id ) {
// Gets the subscription object on subscription id
$subscription = new WC_Subscription( $subscription_id );
// Get last payment date from subscription object, uses the sites timezone setting
$date_subscription_created = $subscription->get_date( 'start', 'site' );
$date_subscription_created = new DateTime( $date_subscription_created );
// The current date/time, uses the sites timezone setting
$today = new DateTime( current_time('mysql') );
// Get the difference in date
$interval = $today->diff( $date_subscription_created );
// Check if interval is more than * days
if( $interval->d > 90 ){
unset( $actions['cancel'] );
}
// Return the actions
return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'remove_cancel_button', 100, 2);
原始出处:
上面的代码设置为读取订阅'start'日期,间隔设置为从开始日期起超过90天,但是它不起作用,任何建议将不胜感激!
尝试为过滤器设置较低的优先级,例如 9
add_filter( 'wcs_view_subscription_actions', 'remove_cancel_button', 9, 2);
function remove_cancel_button($actions, $subscription_id) {
// Gets the subscription object on subscription id
$subscription = new WC_Subscription($subscription_id);
$subscription_start_date = $subscription->get_date('start_date');
$subscription_start_date_obj = new \DateTime($subscription_start_date);
$now = new \DateTime();
if ($subscription_start_date_obj->diff($now)->days > 90) {
unset($actions['cancel']);
}
return $actions;
}
add_filter('wcs_view_subscription_actions', 'remove_cancel_button', 10, 2);
测试正常