2

Я использую подписки WooCommerce.WooCommerce - получать активные подписки в списке между датой начала и окончания

Как я могу получить все подписки (с датой начала и датой окончания) в списках с одной конкретной даты на другую дату?

Пример 01/09/2016 к 15/09/2016

Благодаря

+0

Просьба уточнить, что вы имеете в виду под подпиской. – helgatheviking

+0

HI, спасибо https://woocommerce.com/products/woocommerce-subscriptions/ – Leon

+0

Я знаю, что такое плагин подписки WooCommerce. Я прошу разъяснить ваш вопрос. Вы хотите, чтобы все подписки были созданы за это время или вы хотите включить подписки с платежами за продление, сделанные за это время. Первый - это простой ['WP_Query'] (https://codex.wordpress.org/Class_Reference/WP_Query# Date_Parameters), последнее я не уверен. – helgatheviking

ответ

7

Ниже приведен пример функции, которая будет отображать список всех активных подписок с одной даты на другую , в форматированной таблице html. В этом примере вы получите для каждой подписки: идентификатор подписки, дату, идентификатор клиента и имя клиента (вы можете настроить код, чтобы получить то, что вы хотите).

Таким образом, эта функция имеет 2 параметра даты. Для использования и спецификации см. Раздел в конце.

Код функции:

function active_subscription_list($from_date=null, $to_date=null) { 

    // Get all customer orders 
    $subscriptions = get_posts(array(
     'numberposts' => -1, 
     'post_type' => 'shop_subscription', // Subscription post type 
     'post_status' => 'wc-active', // Active subscription 
     'orderby' => 'post_date', // ordered by date 
     'order' => 'ASC', 
     'date_query' => array(// Start & end date 
      array(
       'after'  => $from_date, 
       'before' => $to_date, 
       'inclusive' => true, 
      ), 
     ), 
    )); 

    // Styles (temporary, only for demo display) should be removed 
    echo "<style> 
     .subscription_list th, .subscription_list td{border:solid 1px #666; padding:2px 5px;} 
     .subscription_list th{font-weight:bold} 
     .subscription_list td{text-align:center} 
    </style>"; 

    // Displaying list in an html table 
    echo "<table class='shop_table subscription_list'> 
     <tr> 
      <th>" . __('Number ID', 'your_theme_domain') . "</th> 
      <th>" . __('Date', 'your_theme_domain') . "</th> 
      <th>" . __('User ID', 'your_theme_domain') . "</th> 
      <th>" . __('User Name', 'your_theme_domain') . "</th> 
     </tr> 
      "; 
    // Going through each current customer orders 
    foreach ($subscriptions as $subscription) { 
     $subscription_id = $subscription->ID; // subscription ID 
     $subscription_date = array_shift(explode(' ', $subscription->post_date)); // Date 
     $subscr_meta_data = get_post_meta($subscription->ID); 
     $customer_id = $subscr_meta_data['_customer_user'][0]; // customer ID 
     $customer_name = $subscr_meta_data['_billing_first_name'][0] . ' ' . $subscr_meta_data['_billing_last_name'][0]; 
     echo "</tr> 
       <td>$subscription_id</td> 
       <td>$subscription_date</td> 
       <td>$customer_id</td> 
       <td>$customer_name</td> 
      </tr>"; 
    } 
    echo '</table>'; 
} 

Этот код идет в function.php файле Вашего активного ребенка темы (или темы), или же в любом файле плагина.


ИСПОЛЬЗОВАНИЕ(пример):

Вы должны уважать этот числовой формат даты: YEAR-MONTH-DAY

$from_date = '2016-06-19'; // start date 
$to_date = '2016-09-21'; // End date 

active_subscription_list($from_date, $to_date); 

Это будет отображать список всех активных подписок с 2016-06-19 по 2016-09-21 годы ...

Этот код проверен и работает.

+1

Спасибо большое :) – Leon

Смежные вопросы