###現状
woocommerceにて、checkoutから他のページ飛んだときに、カートの中をクリアにしたいと思っています。
商品を選ぶ
↓
カートに入れる
↓
決済画面[checkout]
↓
別のページに飛ぶ
↓
再び決済画面
↓
カートの中身がゼロに
なのですが、functionに下記を書くと、
「動作はするけど管理画面に入れない」
状態になってしまいます。
php
1function woocommerce_clear_cart_url() { 2 $url = $_SERVER['REQUEST_URI']; 3 $check = strstr($url,'checkout'); 4 if (!$check){ 5 global $woocommerce; 6 $empty = WC()->cart->empty_cart(); 7 return $empty; 8 } 9} 10add_action( 'woocommerce_init', 'woocommerce_clear_cart_url' );
エラーメッセージ
Fatal error: Call to a member function empty_cart() on null in /Users/~~~~~/functions.php on line 823
###試したこと
1.プラグインを全部消して実装
→変わらず
↓
empty_cart()がnullなら…
↓
2.他の関数で出来ないか実践
■ログアウトしたらカートを空にする
php
1function your_function() { 2 if( function_exists('WC') ){ 3 WC()->cart->empty_cart(); 4 } 5} 6add_action('wp_logout', 'your_function');
問題なく動きます
→このwp_logoutをwoocommerce_initに変更すると上記エラーが出る
↓ということは
woocommerce_initが原因…?
###最後に
皆様の知恵をお貸し下さい。
よろしくお願いします!
あなたの回答
tips
プレビュー