Created
January 27, 2017 03:15
-
-
Save adnan360/0982f7d50f23038b2aa53fa8deff1ff5 to your computer and use it in GitHub Desktop.
Woocommerce Subscriptions: get all subscribed products for a subscriber (find if a product is subscribed)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function has_an_active_subscriber( $product_id = null ){ | |
// Empty array to store ALL existing Subscription PRODUCTS | |
$products_arr = array(); | |
$products_subscr = get_posts( array( | |
'numberposts' => -1, | |
'post_status' => 'publish', | |
'post_type' => array( 'product', 'product_variation' ), | |
'meta_key' => '_subscription_price', | |
) ); | |
foreach( $products_subscr as $prod_subs ) { | |
$products_arr[] = $prod_subs->ID; | |
} | |
// Testing if current product is a subscription product | |
if (in_array( $product_id, $products_arr) ){ | |
// Declaring empties arrays | |
$subscribers_arr = array(); // ALL subscribers IDS | |
$active_subscriptions_arr = array(); // ALL actives subscriptions | |
$active_subscription_products_arr = array(); // ALL actif subscription products IDS IDS | |
$subscriber_subscriptions = array(); | |
// Getting arrays of "active" IDS for subscribers, subscriptions orders and subscription products | |
$subscribers = get_users( array( 'role' => 'subscriber') ); | |
foreach( $subscribers as $subscriber ) { | |
$subscriber_arr[] = $subscriber->ID; | |
$subscriptions = wcs_get_users_subscriptions($subscriber->ID); | |
foreach ($subscriptions as $key => $subscription ){ | |
$subscription_status = $subscription->post->post_status; | |
if ( $subscription_status == 'wc-active' ) { // active subscriptions only | |
$subscription_id = $subscription->post->ID; | |
$order_id = $subscription->order->post->ID; // order ID (corresponding to the subscription ID) | |
$active_subscriptions_arr[] = $subscription->post->ID; | |
$order_items = $subscription->order->get_items(); | |
// Getting all the products in the Order | |
foreach ( $order_items as $item ) { | |
// $item_id = $item[product_id]; | |
// Avoiding to add existing products in the array | |
if( !in_array( $product_id, $active_subscription_products_arr )) | |
$active_subscription_products_arr[] = $item[product_id]; | |
} | |
} | |
} | |
} | |
} | |
if (in_array( $product_id, $active_subscription_products_arr ) ) return true; | |
else return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment