Je souhaite supprimer certaines variables de session WooCommerce car, lors du chargement de la page, les points d'ancrage que j'utilise n'ont pas été déclenchés, ce qui laisse les données de la session précédente remplies dans la table d'envoi.
Au sein de toutes les fonctions accessibles à partir des points d'ancrage, je peux accéder à des vars de session WooCommerce tels que:
WC()->session->get('foo');
Cependant, en dehors de ces rappels, WC
n'est pas défini. J'ai essayé de mettre en place:
global $woocommerce;
et en accédant via $woocommerce->session->__unset('foo');
mais avec le message suivant:
Essayer d'obtenir une propriété de non-objet
et l'erreur:
Erreur fatale: Erreur non capturée: appel à un membre fonction __unset () sur null
Donc, clairement, ce $woocommerce
global n’est pas le même que WC
(qui, je suppose, est exposé par les crochets?)
Je pense que je peux désélectionner ces variables en utilisant l'un des premiers hooks qui se déclencheront sur la page de paiement, mais je me suis demandé:
Quelle est la différence entre WC()
et $woocommerce
? Ne sont-ils pas les deux moyens d'accéder aux méthodes WooCommerce?
wc();
renvoie l'instance singleton de WooCommerce
afin d'éviter l'utilisation de globals.
WC définit le $woocommerce
global de la manière suivante: $GLOBALS['woocommerce'] = wc();
, donc utiliser l’un ou l’autre semble identique….
MODIFIER
A propos de vos erreurs, vous les avez obtenues parce que $woocommerce->session
n'a pas été défini. WC initialise WC_Session_Handler
uniquement sur les requêtes frontales ou CRON. Choisissez votre crochet d'action en conséquence.