【问题标题】:Get Woocommerce Subscription Start Date获取 Woocommerce 订阅开始日期
【发布时间】:2016-07-08 08:57:34
【问题描述】:

我意识到这可能完全是一个新手问题,但此时我非常沮丧,我什至不在乎。我正在尝试使用当前用户的订阅开始日期创建一个变量 - 如果他们有一个 - 我一直在拉动开始日期。

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

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

任何有用的 cmets 将不胜感激。提前致谢。

【问题讨论】:

    标签: php wordpress woocommerce subscriptions


    【解决方案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");
    

    如果您不知道订阅 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;
    }
    

    【讨论】:

    • 感谢您非常有帮助、尊重、及时和彻底的回复!我想我错过了当我疯狂地寻找一种让它工作的方法时它是如何返回的——这意味着我可能仍然没有得到你提供的正确的最终编码。我没有设置用户 ID,默认情况下,如果没有任何值,我相信它会为当前用户填充?对于我要编写的函数,我只是想看看他们是否有任何订阅(他们一次只能有 1 个订阅)。
    猜你喜欢
    • 2017-12-30
    • 2015-04-16
    • 2017-01-28
    • 2015-01-11
    • 2017-11-30
    • 1970-01-01
    • 2021-06-02
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多