WC_Helper::deactivate_helper_subscription
Deactivate a product subscription.
Method of the class: WC_Helper{}
Hooks from the method
Returns
true|false. True if deactivated, false otherwise.
Usage
$result = WC_Helper::deactivate_helper_subscription( $product_key );
- $product_key(string) (required)
- Subscription product key.
WC_Helper::deactivate_helper_subscription() WC Helper::deactivate helper subscription code WC 10.7.0
public static function deactivate_helper_subscription( $product_key ) {
$subscription = self::get_subscription( $product_key );
if ( ! $subscription ) {
throw new Exception( __( 'Subscription not found', 'woocommerce' ) );
}
$product_id = $subscription['product_id'];
$deactivation_response = WC_Helper_API::post(
'deactivate',
array(
'authenticated' => true,
'body' => wp_json_encode(
array(
'product_key' => $product_key,
)
),
)
);
$code = wp_remote_retrieve_response_code( $deactivation_response );
$deactivated = 200 === $code;
if ( $deactivated ) {
/**
* Fires when the Helper activates a product successfully.
*
* @param int $product_id Product ID being deactivated.
* @param string $product_key Subscription product key.
* @param array $deactivation_response The response object from wp_safe_remote_request().
*/
do_action( 'woocommerce_helper_subscription_deactivate_success', $product_id, $product_key, $deactivation_response );
} else {
self::log( sprintf( 'Deactivate API call returned a non-200 response code (%d)', $code ) );
/**
* Fires when the Helper fails to activate a product.
*
* @param int $product_id Product ID being deactivated.
* @param string $product_key Subscription product key.
* @param array $deactivation_response The response object from wp_safe_remote_request().
*/
do_action( 'woocommerce_helper_subscription_deactivate_error', $product_id, $product_key, $deactivation_response );
$body = json_decode( wp_remote_retrieve_body( $deactivation_response ), true );
throw new Exception( $body['message'] ?? __( 'Unknown error', 'woocommerce' ) );
}
self::_flush_subscriptions_cache();
self::_flush_updates_cache();
self::flush_product_usage_notice_rules_cache();
return $deactivated;
}