2016-08-08 15 views
0

誰かが私をここで助けてくれることを本当に願っています。AJAXを使用して、現在カートに入っている現在の商品の数を表示する

私が達成したいのは、現在の商品がショッピングカートにいくつ含まれているかを示す小さなアイコンを表示することです。例えば。ユーザーが商品ページ「新鮮なオレンジ」をブラウズしている場合、ユーザーは2つの新鮮なオレンジをカートに追加し、商品ページのどこかに「2」を表示したい。ここに私のコードは次のとおりです。

<?php foreach(WC()->cart->get_cart() as $cart_item_key => $values) { 
$_product = $values['data'];  
if($_product->id == get_the_ID()) { ?> 
    <div class="quantity-in-cart"> 
     <span><?php echo $values['quantity'] ?></span> 
    </div> 
<?php } } ?> 

それは働いているあなたは、製品ページを更新する場合は、しかし、全体のページは、ユーザーが製品を追加するたびに更新されませんので、私はAJAXを使用していることから、私がこの数量フィールドを必要としますこの商品の詳細がカートに追加されましたので更新してください。

私が本当に感謝してくれる人がいれば、ご質問や、私が書いたことのどれも意味が分かりません。

+0

あなたの中にはajaxがありません現在のコード。あなたは、注文を取るバックグラウンドPHPスクリプトにAJAXリクエストを送信し、あなたの応答がショッピングカートの数量を更新した場合、成功したら?もう1つの方法は、数量を更新してチェックアウト時やそのページから移動するときに送信することです(最初はajaxを必要としません) – datafunk

+0

こんにちはdatafunk - 私はそこにAJAXがないことを知っていますが、これは、woocommerceカートから現在の製品IDの数量を取得するコードの単なる例です。私が探しているのは、ユーザーがカートに商品を追加したときに数量を再確認することです。応答していただきありがとうございます。編集:このすべてが製品ページで実行されることを明確にする必要があります。私はちょうどユーザーのカートに入っている製品の数を表示したいだけです。 –

答えて

-1

私はあなたが言及ショッピングカートに慣れていないですが、概念的にはこれは、私はそれ(私の最初のコメントのオプション1)については行くだろうかです:

<div class="quantity-in-cart"> 
    <span data-qty="0" id="qty">0</span> 
</div> 

<input type="number" value="0" step="1" id="add_qty"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
var qty = $('#qty').data('qty'); 

$('#add_qty').on('click', function(event){ 
    $.ajax({ 
     url: "path/to/your/script.php", 
    }).done(function() { 
     $('#qty').attr('data-qty', $(this).val()); 
     $('#qty').html($(this).val()); 
    }); 
}); 

</script> 
+0

私の答えを落とした理由を説明してください。あなたの質問に答えると思うRE AJAXを使用してこのメ​​ソッドを実装する方法 – datafunk

+0

それは私が仲間ではなかった、私はあなたが試して助けに時間がかかったことに感謝しているので、誰かがそれをしたように見える。私が理解できる限り、達成しようとしていることを実際に達成するものではありません。WooCommerceがミニカートとしてAJAXをどのように使用しているかを知っている人なら、そこからコードを取り出して少し修正することができます。そのような解決策が誰もポップアップしない場合は、私が投稿した回避策に満足しています。 –

0

私は必要とせず、回避策を見つけました私のニーズに合ったAJAXを使うこと。

ユーザーが後で製品ページに戻った場合のカート内の現在の製品番号を表示します。空の場合、何も表示されません。

<div class="quantity-in-cart"> 
<span><?php foreach(WC()->cart->get_cart() as $cart_item_key => $values) { 
    $_product = $values['data'];  
    if($_product->id == get_the_ID()) { ?><?php echo $values['quantity'] ?> 
<?php } } ?></span> 
</div> 

したがって、現在の製品がカートにない場合、そのスパンには何も表示されません。だから私は、これは0を追加するJSを追加しました:

$span = $(".quantity-in-cart span"); 
if($span.text() == ""){ 
    $span.text("0"); 
} 

今そのスパンで0セットのデフォルト値と、ユーザーがカートに現在の製品の多くを追加した場合、我々はスパンで数を追加することができますカートに追加フォームを介してユーザによって選択された数量に変更される。

$(".description .add-to-cart .add_to_cart_button").click(function() { 
    $('.quantity-in-cart span').text(parseInt($('.quantity-in-cart span').text()) + parseInt($('.quantity .qty').val())); 
}); 

...そして私はそれに満足しています。 PHPを使ってカートに現在のプロダクトがない場合、おそらくそのスパンに0を入れるより良い方法がありますが、私はPHPでうまくいきません。ちょうど誰かが似たようなことを達成するために探しているオフチャンスについて私の回避策を分かち合うと思った。私はまだWooCommerceのAJAX機能を使用してこれを正しく行う方法を見ていることに興味があります(使用可能なミニカートのコードがあるかもしれませんが、私は十分理解できません)。

関連する問題