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.