2016-04-28 6 views
2

これは正しい質問ですが、それでも解決策は見つかりませんでした。私はユーザーが現在のチェックアウトページ以外のページ/サイトに行くと、ユーザーのカートが自動的に空になるメソッドを作成しようとしています。カスタムEショップの購入フローを変更したため、これが可能かどうかは疑問です。私はインターネットで検索を試み、多くの方法を試みましたが、うまくいかないようです。私は現在、WooCommerceのフック&の機能がどのように機能するかを理解するのに苦労しています。WooCommerceユーザーが現在のチェックアウトページ以外のページまたはサイトに移動した場合の空のカート

さて、私のコードは最初からどのように動作するか私は君たちを教えてみましょう: -

これらは全体の利用可能な製品を表示するページのコードです。ご覧のように、ユーザーが商品を購入したいときは、購入ボタンをクリックすると、自分のEショップが自動的にその商品をカートに追加します。

<?php 
// Querying of product information retrieval 
$args = array('post_type' => 'product', 'posts_per_page' => 4, 'orderby' =>'menu_order', 'order' =>'ASC'); 
$loop = new WP_Query($args); 

// Display each retrieved product 
while ($loop->have_posts()) : 
$loop->the_post(); 

// WooCommerce global product variable 
global $product; 
global $woocommerce; 


the_title(); 
the_excerpt(); 
echo $product->get_price_html(); 
$id = $product->id; 
?> 

/**** Select the product & automatically add to cart ****/ 
<a href="<?php echo do_shortcode('[add_to_cart_url id="' . $id . '"]'); ?>"><button type="button"> BUY</button></a> 

<?php endwhile; ?> 
<?php wp_reset_query(); // After the loop ended, quit the custom loop and reset back the main loop 
?> 

私のEショップが「カートに追加」プロセスを完了すると、ユーザーはチェックアウトページにリダイレクトされます。その機能は以下の通りです。

add_filter ('add_to_cart_redirect', 'redirect_to_checkout'); 

function redirect_to_checkout() { 
global $woocommerce; 
$checkout_url = $woocommerce->cart->get_checkout_url(); 
return $checkout_url; 
} 

基本的に言えば、ユーザーはクリックしてその商品を購入した後、直接Checkoutページにリダイレクトされます。この方法では、Single Productページ&カートに入れることができません。

しかし、今すぐ正しい方法を決定するための助けが必要ですユーザーがそのページから抜け出すかログアウトすると、カートは自動的に空になります。出来ますか?そうでなければ、私の知識が不足して申し訳ありません。

私はそれが私がしたいことに最も近いので、以下のコードを試しています。閉じるが動作しない。私は再び買いホームページに戻る、または他のリンクに移動し、クリックしてみました時はいつでも上記の機能により、

add_action('init', 'woocommerce_clear_cart_url'); 
function woocommerce_clear_cart_url() { 
    global $woocommerce; 

    if (!is_page('93')) { 
     $woocommerce->cart->empty_cart(); 
    } 
} 

は、カートがちょうど追加し続けます。このことは私の心を失うことになっています。私はあなたが私を助けてくれることを願っています。

+0

こんにちはKaydarin。あなたはこれの解決策を見つけましたか?私は同じことをする必要があります。 – inspirednz

+0

@ inspirednz pls私の解決策を試してください – DrMosko

答えて

0

ワードプレス条件付きで作業しない場合init(あまりに早く使用するis_page('93'))。そういけない何かがWordPressの条件文に依存している使用:

is_page('93')のページのURLを言うことができます取得:

www.domain.name/checkout、その後のfunctions.phpにこのコードを使用します。

/*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'] !=== '**www.domain.name/checkout**') { 
    $woocommerce->cart->empty_cart(); 
} 
} 
関連する問題