2016-03-21 6 views
2

Я понимаю, что это вполне может быть полным новичком, но на данный момент я так расстроен, что мне все равно. Я пытаюсь создать переменную с текущей датой начала подписки пользователей - если она есть, и я застрял в начале даты.Get Woocommerce Subscription Дата начала

Это то, что у меня есть до сих пор - это будет не короткий код в конце (это будет переменная, которую я вложил в функцию). Я только что настроил ее как короткий код, чтобы я мог видеть output - и возвращает весь массив данных, сохраненных пользователями. Я только после даты начала :)

function subscriber_start_date(){ 
    $start_date = WC_Subscriptions_Manager::get_users_subscription($user_id, 'start_date'); 
    print_r($start_date); 
} 

add_shortcode("subscriber-start-date","subscriber_start_date"); 

Я посмотрел на документы here и here но я до сих пор просто составление ничего об этом, и я знаю, что это будет что-то глупо просто, как добавить переменную где-то, запятая или [''] - я пробовал множество комбинаций вещей, которые имеют для меня смысл, но ничего не работает (это единственная комбинация, которая возвращает что-то полезное).

Любые ПОЛЕЗНЫЕ комментарии были бы весьма признательны. Заранее спасибо.

ответ

1

Стоит отметить несколько вещей:

Во-первых, это не основной WooCommerce, это надстройка (Подписки).

Во-вторых, в документации вы связаны говорит конкретно:

... каждая подписка возвращается как массив со следующими значениями ...

Это означает, что функция не собираюсь вернуть только дату начала.

Иными словами, второе поле является идентификатором подписки . Пользователь может иметь более одной подписки. Эта функция позволяет вам получить определенную подписку, а не определенное поле из подписки.

Итак, для того, чтобы делать то, что вы хотите, вам нужно добавить в код следующим образом:

function subscriber_start_date() { 
    // NOTE: You don't have the $user_id - are you setting it? 

    // Somehow you need to identify the subscription you want. 
    $subscription_id = 'MY_SUBSCRIPTION_ID'; 
    $subscription = WC_Subscriptions_Manager::get_users_subscription($user_id, $subscription_id); 

    $start_date = (isset($subscription['start_date'])) ? $subscription['start_date'] : FALSE; 

    var_dump($start_date); 
} 

add_shortcode("subscriber-start-date","subscriber_start_date"); 

Если вы не знаете идентификатор подписки, то вы могли бы сделать что-то вроде этого, чтобы получить «первая» подписка для пользователя:

function subscriber_start_date() { 
    // Set start date to initial value 
    $start_date = FALSE; 
    // Get ALL subscriptions 
    $subscriptions = WC_Subscriptions_Manager::get_users_subscriptions($user_id); 
    if ($subscriptions) { 
     // Get the first subscription 
     $subscription = array_shift($subscriptions); 
     // Get the start date, if set 
     $start_date = (isset($subscription['start_date'])) ? $subscription['start_date'] : FALSE; 
    } 

    return $start_date; 
} 
+0

Благодарим за очень полезный, уважительный, своевременный и тщательный ответ! Думаю, я пропустил, как это было возвращено, когда я отчаянно искал способ заставить его работать, - сказал, что, вероятно, я бы не получил надлежащую кодировку конца, которую вы предоставили. У меня не было идентификатора пользователя, по умолчанию, если он оставлен без значения, который он заполняет для текущего пользователя, я верю? Для функции, которую я ищу, я просто хочу посмотреть, есть ли у них подписка (и им будет разрешено иметь только одну подписку за раз). –