chức năng có điều kiện tùy chỉnh thực hiện này sẽ trở lại true
nếu một sản phẩm thuê bao đã được tích cực sử dụng bởi một thuê bao.
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;
}
Mã này đi trên function.php chủ đề con đang hoạt động (hoặc chủ đề) hoặc trên bất kỳ tệp plugin nào.
Tôi vừa sử dụng ở đây wcs_get_users_subscriptions()
chức năng đăng ký gốc, để nhận đăng ký cho ID người dùng được xác định, trong mã của tôi.
SỬ DỤNG(đối với một biến product_id $ được xác định)
If (has_an_active_subscriber($product->id)) { // or $product_id
// This product is already used by an active subscriber
// DO SOMETHING HERE
} else {
// This product is NOT used
// DO SOMETHING HERE
}
Bạn cũng có thể thay thế $product_id
bởi một ID sản phẩm ở đây ví dụ nếu ID của sản phẩm là 124) :
If (has_an_active_subscriber(124)) //do something
Bạn có thể sử dụng chức năng có điều kiện này đặc biệt, trên add-to-cart
(đăng ký) mẫu (mà bạn sẽ phải sao chép từ thư mục thuê bao Plugin mẫu để hoạt động theme's woocommerce template folder của bạn ...)
Tất cả các mã được kiểm tra và đầy đủ chức năng
Tài liệu tham khảo:
Bất kỳ trợ giúp vui lòng. – user3814097