{"id":17470662,"date":"2024-03-04T02:55:48","date_gmt":"2024-03-04T02:55:48","guid":{"rendered":"https:\/\/wordpress.org\/support\/topic\/active-subscription\/"},"modified":"2024-03-04T03:18:19","modified_gmt":"2024-03-04T03:18:19","slug":"active-subscription","status":"publish","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/active-subscription\/","title":{"rendered":"Active subscription"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good morning, I want to prevent the purchase of the product while it is active if the current user has an active subscription for the product they are trying to add to the cart. If so, an error message is displayed and the product is prevented from being added to the cart. Alternatively, if it is possible to proceed with the purchase, I want this purchase to be for renewing the subscription.   I&#8217;ve been trying to solve this problem with this code, but I don&#8217;t know much about the topic<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter('woocommerce_is_purchasable', 'restringir_compra_y_carrito_si_suscripcion_activa', 10, 2);\n\nfunction restringir_compra_y_carrito_si_suscripcion_activa($purchasable, $product) {\n    \/\/ Obtiene el ID del usuario actual\n    $user_id = get_current_user_id();\n\n    \/\/ Obtiene todas las suscripciones del usuario actual\n    $subscriptions = SUBRE_PRODUCT_SUBSCRIPTION_FOR_WOO_Admin_Settings::get_subscriptions_for_user($user_id);\n\n    \/\/ Recorre todas las suscripciones del usuario\n    foreach ($subscriptions as $subscription) {\n        \/\/ Verifica si el usuario tiene una suscripci\u00f3n activa para el producto\n        if ($subscription-&gt;has_product($product-&gt;get_id()) &amp;&amp; $subscription-&gt;is_active()) {\n            \/\/ Si es as\u00ed, el producto no puede ser comprado ni a\u00f1adido al carrito\n            wc_add_notice(__('Ya tienes una suscripci\u00f3n activa para este producto.', 'woocommerce'), 'error');\n            return false;\n        }\n    }\n\n    \/\/ Si ninguna de las suscripciones del usuario coincide con el producto,\n    \/\/ devuelve el valor original de $purchasable\n    return $purchasable;\n}\n<\/code><\/pre>\n","protected":false},"template":"","class_list":["post-17470662","topic","type-topic","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/17470662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":1,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/17470662\/revisions"}],"predecessor-version":[{"id":17470681,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/17470662\/revisions\/17470681"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=17470662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}