Cómo obtener el estado de una subscripción de Woocommerce Subscriptions

La forma de obtener el estado de una subscripción es mediante una función personalizada que hace una consulta a la base de datos de WordPress y se hace de la siguiente manera:

function get_subscription_status(){
    
    global $wpdb;
    $user_id   = get_current_user_id();
    // 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 ? true : false;  
     
}

Esta función hará una consulta en la base de datos buscando en el estado del post el key «wc-active» y el usuario actual. devuelve un valor boleano.

Podemos hacer que reciba el usuario por parámetro de la siguiente manera:

function get_subscription_status($user_id){
    
    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 ? true : false;  
     
}

O podemos hacer que devuelva un string a través de un shortcode de la siguiente forma:

function get_subscription_status($user_id){
    
    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 ? "Activo" : "Inactivo";  
     
}

add_shortcode("get_subscription_status","get_subscription_status");

Estos son ejemplos de uso de la función. Puedes modificarla según tus necesidades.

Compartir esta información