Woocommerceを使用して、ページの読み込み時にカートの内容をクリアする方法を考えています。
Functions.phpにこれを追加することで、明確なカートボタンを追加する方法に出くわしました
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}
しかし、ホームページのページ読み込みなどでこれをトリガーする方法について疑問に思っていました(すばらしいページを正確に指定できれば、ホームページでも便利です)
何か案は?ありがとう!
フロントページでのみトリガーするには、関数は次のように見える必要があります。
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( is_front_page() && isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}
function is_front_page() は、wordpressサイトのフロントページでのみtrueを返します。また、関数 is_page() =ページタイトル、ID、スラッグを渡すことができる場所
これの更新バージョンは次のようになります。
WC()->cart->empty_cart();
これを試して。それがあなたのお役に立てば幸いです。
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if (strpos($_SERVER['REQUEST_URI'], '/checkout') < 0 )
{
$woocommerce->cart->empty_cart();
}
}
このWooCommerceコア関数を単に呼び出すことができます。
WC()->cart->empty_cart();
カートセッションをクリアするには:
WC()->session->set('cart', array());
ありがとう
上記のコードはいずれもWordpressインストール(4.9.6)では動作しませんでした。したがって、add_actionを変更し、変数requestを削除して、直接実行しました。
現在、私のWoocommerceプラグインは、ユーザーが重複エラーなしでチェックアウトページを終了すると、カートから製品を消去します。皆さん、助けてくれてありがとう
add_action( 'woocommerce_add_cart_item_data', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
$woocommerce->cart->empty_cart();
}
上記は私のために働いていなかったので、WordPress条件付きに依存しないものが必要でした:
/*empty cart if user come to homepage*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ($_SERVER['REQUEST_URI'] === '/') {
$woocommerce->cart->empty_cart();
}
}
カートページに空のカートボタンが必要な場合は、以下のプラグインを使用してカートをクリアできます
プラグイン名:WooCommerceリンクの空のカートボタン: https://wordpress.org/plugins/woo-empty-cart-button/
プラグインを有効にするだけで設定は不要です。