webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen WC () und $ woocommerce?

Ich möchte einige WooCommerce-Sitzungsvariablen deaktivieren, da beim Laden der Seite die von mir verwendeten Hooks nicht ausgelöst wurden und die vorherigen Sitzungsdaten in der Versandtabelle der Kasse verbleiben.

Innerhalb aller Funktionen, auf die über Hook-Callbacks zugegriffen wird, kann ich auf WooCommerce-Sitzungsvarianten zugreifen, z.

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

Außerhalb dieser Rückrufe ist WC jedoch nicht definiert. Ich habe versucht, folgende Einstellungen vorzunehmen:

global $woocommerce; und Zugriff über $woocommerce->session->__unset('foo');, jedoch mit dem Hinweis:

Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen

und der Fehler:

Schwerwiegender Fehler: Nicht abgefangener Fehler: Aufrufen einer Mitgliedsfunktion __unset () auf null

Also, klar ist dieser $woocommerce global nicht derselbe wie WC (was schätze ich, wird durch die Haken entlarvt?)

Ich glaube, ich kann diese Variablen mit einem der ersten Hooks, die auf der Checkout-Seite ausgelöst werden, deaktivieren, aber ich habe mich gefragt:

Was ist der Unterschied zwischen WC() und $woocommerce? Sind das nicht beide Möglichkeiten, auf WooCommerce-Methoden zuzugreifen?

2
armadadrive

wc(); gibt die Singleton-Instanz von WooCommerce zurück, um zu verhindern, dass Globals verwendet werden müssen.

WC setzt den $woocommerce global wie folgt: $GLOBALS['woocommerce'] = wc();, daher scheint die Verwendung des einen oder anderen gleich zu sein ...

EDIT

Sie haben Informationen zu Ihren Fehlern erhalten, da $woocommerce->session nicht festgelegt wurde. WC initialisiert WC_Session_Handler nur bei Frontend- oder CRON-Anfragen. Wählen Sie Ihren Aktionshaken entsprechend aus.

5
ClemC