Suscripciones de Woocommerce – Obtener fecha de inicio

3 minutos de lectura

avatar de usuario
sam skirrow

Estoy tratando de crear una función que devuelva la fecha de inicio de la suscripción de un usuario. Estoy usando woocommerce y el complemento de suscripciones.

Tenía este código funcionando, sin embargo, devolvió un error “depreciado” en mi debug.log, y también se cargó MUY lento:

function subscriber_start_date() {
    global $current_user;
    $user = wp_get_current_user();
    // Set start date to initial value
    $start_date = FALSE;
    // Get ALL subscriptions
    $subscriptions = WC_Subscriptions_Manager::get_users_subscriptions( $user->ID );
    $subscriptions = wcs_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;
}

Después de buscar un poco, encontré esta función en la documentación:

WC_Subscription::get_date( 'start' );

Pero esto también me da una serie de errores de la siguiente manera:

PHP Strict Standards:  Non-static method WC_Subscription::get_date() should not be called statically in /home/skizzar/public_html/wp-content/plugins/lessons-extension/includes/ls-helpers.php on line 28
PHP Notice:  WC_Subscription::get_date was called with an argument that is <strong>deprecated</strong> since version 2.2.0! The &quot;start&quot; date type parameter has been deprecated to align date types with improvements to date APIs in WooCommerce 3.0, specifically the introduction of a new &quot;date_created&quot; API. Use &quot;date_created&quot; in /home/skizzar/public_html/wp-includes/functions.php on line 4023
PHP Fatal error:  Using $this when not in object context in /home/skizzar/public_html/wp-content/plugins/woocommerce-subscriptions/includes/class-wc-subscription.php on line 948

¿Hay alguna forma sencilla de obtener la fecha de inicio de la suscripción que me falta?

ACTUALIZACIÓN: cuando uso ‘date_created’ en lugar de ‘start’, recibo los siguientes errores:

PHP Strict Standards:  Non-static method WC_Subscription::get_date() should not be called statically in /home/skizzar/public_html/wp-content/plugins/lessons-extension/includes/ls-helpers.php on line 28
PHP Fatal error:  Using $this when not in object context in /home/skizzar/public_html/wp-content/plugins/woocommerce-subscriptions/includes/class-wc-subscription.php on line 948

  • Tratar WC_Subscription::get_date( 'date_created' ); en cambio

    – Steven Kellow

    24 de julio de 2017 a las 12:18

  • @stevenkellow Acabo de intentarlo, pero sigue apareciendo errores (agregado a mi pregunta)

    – Sam Skirrow

    24 de julio de 2017 a las 12:20

  • Creo que necesitas obtener una instancia del WC_Subscription objeto antes de con algo como $subscription_obj = new WC_Subscription( $subscition_id); (por lo que necesita obtener la identificación de suscripción) y luego puede usar de manera segura $subscription_obj->get_date( 'date_created' );

    – LoicTheAztec

    24 de julio de 2017 a las 14:01


Debe recorrer la matriz de suscripciones:

$subscriptions = wcs_get_users_subscriptions( $user->ID );
foreach ($subscriptions as $sub)

y obtenga un objeto de suscripción como este:

$subscription = wcs_get_subscription( $sub->ID );

Solo entonces podrá obtener fechas a través de la función, por ejemplo:

$subscription->get_date( 'start' );

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad