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.