¿Cuál es la diferencia entre WC () y $ woocommerce?

2

Quiero desactivar algunas variables de sesión de WooCommerce porque en la carga de la página los ganchos que estoy usando no se han disparado, lo que deja a los datos de la sesión anterior en la tabla de envío de pago.

Dentro de las funciones a las que se accede desde las devoluciones de llamada de enlace, puedo acceder a las vars de sesión de WooCommerce como:

WC()->session->get('foo');

Sin embargo, cuando está fuera de esas devoluciones de llamada, WC no está definido. Intenté configurar:

global $woocommerce; y accediendo a través de $woocommerce->session->__unset('foo'); pero recibió el aviso:

  

Intentando obtener propiedad de no objeto

y el error:

  

Error grave: Error no detectado: llamar a una función miembro __unset () en nulo

Entonces, claramente, este $woocommerce global no es lo mismo que WC (que supongo que está expuesto por los ganchos)

Creo que puedo desarmar estas variables usando uno de los primeros ganchos que se activarán en la página de pago, pero me sorprendió:

¿Cuál es la diferencia entre WC() y $woocommerce ? ¿No son las dos formas de acceder a los métodos de WooCommerce?

    
pregunta armadadrive 05.08.2017 - 17:02

1 respuesta

5

wc(); devuelve la instancia de singleton de WooCommerce para evitar la necesidad de usar globales.

WC configura el $woocommerce global de esta manera: $GLOBALS['woocommerce'] = wc(); , por lo que usar uno u otro parece lo mismo ...

EDIT

Sobre sus errores, los obtuvo porque no se ha establecido $woocommerce->session . WC inicializa WC_Session_Handler solo en solicitudes de frontend o CRON. Elija su gancho de acción en consecuencia.

    
respondido por el ClemC 05.08.2017 - 17:46

Lea otras preguntas en las etiquetas