Home » WooCommerce Subscriptions: Get Subscribers By Product

WooCommerce Subscriptions: Get Subscribers By Product

by Tutor Aspire

If you use the official WooCommerce Subscription plugin, one day or another you will need to know what is the list of subscribers for a given subscription product. In my own specific case, for example, I wanted to know who are the “active” subscribers for my private Bloomer Armada membership, so that I can display some conditional content.

There is a neat WooCommerce Subscription function called wcs_get_subscriptions_for_product(), which does exactly that: it returns an array of subscription IDs given a chosen subscription product ID. Once you have the array, you can then loop through each subscription ID in order to get whatever you need – you’ll see below a few examples of the most common data. Enjoy!

In this screenshot, you can see how I was able to get the list of active subscribers under each subscription product on my development website. Of course, you can use the list somewhere else or for whatever else functionality.

PHP Snippet: Display List of Active Subscribers For a Given Subscription Product ID (WooCommerce Subscriptions)

/**
 * @snippet       Get List of Subscribers @ WooCommerce Subscriptions
 * @how-to        Get tutoraspire.com FREE
 * @author        Tutor Aspire
 * @compatible    WooCommerce 6
 * @donate $9     https://www.tutoraspire.com
 */

add_action( 'woocommerce_after_shop_loop_item', 'tutoraspire_show_list_active_subscribers', 11 );

function tutoraspire_show_list_active_subscribers() {
global $product;
if ( ! $product->is_type( 'subscription' ) ) return;
$subscription_ids = wcs_get_subscriptions_for_product( $product->get_id() );
if ( ! $subscription_ids ) return;
$user_names = array();
foreach ( $subscription_ids as $subscription_id ) {
$subscription = wcs_get_subscription( $subscription_id );
$user_id = absint( $subscription->get_user_id() );
$user = get_user_by( 'id', $user_id );
$user_name = $user->display_name;
$status = $subscription->get_status();

// You can also get other stuff
// $period = $subscription->get_billing_period();
// $interval = $subscription->get_billing_interval();
// $start_date = $subscription->get_date( 'start_date' ) );
// $trial_date = $subscription->get_date( 'trial_end' ) );
// $next_payment_date = $subscription->get_date( 'next_payment' ) );
// $end_date = $subscription->get_date( 'end_date' ) );

if ( $status !== 'active' ) continue; // only active subs
$user_names[] = $user_name; // array of names
}
echo '

Active subscribers: ' . implode( ", ", $user_names ) . '

'; }

You may also like