获取 Woocommerce 订阅开始日期

Get Woocommerce Subscription Start Date

我意识到这可能完全是一个新手问题,但在这一点上我很沮丧,我什至不在乎。我正在尝试创建一个包含当前用户订阅开始日期的变量——如果他们有订阅的话——但我一直在拖延开始日期。

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

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 and here,但我仍然只是对此一无所获,我知道这将是一些愚蠢简单的事情,比如在某处添加一个变量、一个逗号或 [''] - 我已经尝试了无数对我有意义的组合,但没有任何效果(这是唯一返回任何有用的组合)。

任何有帮助的评论将不胜感激。提前致谢。

有几点值得一提:

首先,这不是 Core WooCommerce,它是一个附加组件(订阅)。

其次,您链接到的文档明确指出:

...each subscription is returned as an array with the following values...

这意味着函数不会 return 只是开始日期。

换句话说,第二个字段是订阅标识符。一个用户可以有多个订阅。此函数允许您获取特定的订阅,而不是订阅的特定字段。

所以,为了做你想做的事,你需要添加如下代码:

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,那么您可以像这样为用户获取 "first" 订阅:

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