获取Woocommerce订阅开始日期

时间:2016-03-21 17:38:12

标签: php wordpress woocommerce subscriptions

我意识到这可能完全是一个新手问题,但在这一点上我很沮丧,我甚至不关心。我正在尝试使用当前用户订阅开始日期创建一个变量 - 如果他们有一个 - 并且我坚持拉开始日期。

这是我到目前为止 - 它最终不会是一个短代码(它将是我放入函数的一个变量)我只是把它设置为短代码所以我可以看到输出 - 它返回用户存储信息的整个数组。我就在开始日期之后:)

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");

我查看了文档herehere,但我仍然只是在这上面编写任何内容,我知道它会像在某个地方添加变量,逗号或者[''] - 我尝试过无数种对我有意义的组合,但没有任何工作(这是唯一可以使用的组合)。

任何有用的评论将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:2)

值得一提的是:

首先,这不是Core 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");

如果你不知道订阅ID,那么你可以做这样的事情来获得"第一个"订阅用户:

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;
}