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);

测试正常