Comprobar que un usuario tenga una suscripción activa en Woocommerce Subscriptions

Woocommerce Subscriptions cuenta con una función llamada «wcs_user_has_subscription()» pero es posible que experimentes errores como:

Para solucionarlo podemos hacerlo de otra forma. Vamos a realizar una consulta en la base de datos».

Puedes usar la función wcs_user_has_subscription() para verificar si un usuario tiene una suscripción activa en el plugin «Woocommerce Subscriptions». Ejemplo de código:

function check_user_subscription_active() {
            
        if( function_exists( 'wcs_get_users_subscriptions' ) ) {

        // When a $user_id is not specified, get the current user Id
        if( is_user_logged_in() ) {
            $user_id = get_current_user_id();
        }

        // User not logged in we return false
        global $wpdb;

        // Get all active subscriptions count for a user ID
        $count_subscriptions = $wpdb->get_var( "
            SELECT count(p.ID)
            FROM {$wpdb->prefix}posts as p
            JOIN {$wpdb->prefix}postmeta as pm 
                ON p.ID = pm.post_id
            WHERE p.post_type = 'shop_subscription' 
            AND p.post_status = 'wc-active'
            AND pm.meta_key = '_customer_user' 
            AND pm.meta_value > 0
            AND pm.meta_value = '$user_id'
        " );

         return $count_subscriptions == 0;
    }
}

Esta función busca en la base de datos si la subscripción está activa para el usuario actual.

Compartir esta información