WooCommerceセッション変数の設定を解除したいのですが、ページロード時に使用しているフックが起動されていないため、以前のセッションデータがチェックアウト配送テーブルに入力されています。
フックコールバックからアクセスされる関数内では、WooCommerceセッションのvarにアクセスできます。
WC()->session->get('foo');
ただし、これらのコールバックの外側では、WC
は未定義です。設定してみました:
global $woocommerce;
と$woocommerce->session->__unset('foo');
経由でアクセスしたが通知を受け取りました:
非オブジェクトのプロパティを取得しようとしています
そしてエラー:
致命的なエラー:捕捉されないエラー:nullのメンバ関数__unset()への呼び出し
ですから、明らかにこの$woocommerce
グローバルはWC
と同じではありません(フックによって公開されていると思いますか?)
私は、チェックアウトページで起動する最初のフックの1つを使用してこれらの変数を設定解除することができると思いますが、それは私が疑問に思ったのです:
WC()
と$woocommerce
の違いは何ですか? WooCommerceのメソッドにアクセスするには両方の方法がありますか?
wc();
は、グローバルを使用する必要性を防ぐためにWooCommerce
のシングルトンインスタンスを返します。
WCは$woocommerce
グローバルをこのように設定します:$GLOBALS['woocommerce'] = wc();
、どちらか一方を使用することは同じように思われます...
_編集_
あなたのエラーについては、$woocommerce->session
が設定されていないのでそれらを得ました。 WCはフロントエンドまたはCRONリクエストでのみWC_Session_Handler
を初期化します。それに応じてアクションフックを選択してください。