php - Ajaxify ヘッダーカートアイテムはウーコマースでカウント




jquery wordpress (2)

私はこれまでにwoocommerceを使用したことはありませんが、投稿で言うときの1つの非常に簡単なオプション:

このページにアクセスすると、現在のアイテムの合計がエコーされますが、JQueryからこのデータを取得できません

...表示にユーザー側のJavaScript変数を使用し、AJAXを使用してカートにアイテムを追加するためにPHP更新メソッドを呼び出すだけです(コードを提供していないため、以下では表示しません)。

<?php
    //hardcoded value for $woocommerce->cart->get_cart_contents_count()
    $woocommerce = 59;
?>
<button class="ajax_add_to_cart">Add to cart</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    //user sided variable for PHP value
    var total = parseInt($(".totalCost").text()); 
    $(".ajax_add_to_cart").click(function(){
        total++;                     //add to cart
        $(".totalCost").text(total); //update
    });
});
</script>

<p class="totalCost">
    <?php echo json_encode($woocommerce); ?>
</p>

このスニペットをコピーしてテストできます: http://phpfiddle.org/ : http://phpfiddle.org/

基本的に上記のコードでは、ページの読み込み時にPHP値を段落テキストとして設定し、その値をJS変数に読み込んでアプリケーションのクライアント側のデータをいじり、必要に応じて表示テキストを更新します。

ワードプレス用のカスタムwoocommerce統合テーマを作成しています。

カート内のアイテムの合計数を表示するブロブが上部にあります。JQueryを使用してこのブロブを更新します(ページのリロードなし)。現在の数を問題は、クリックごとに+1を増やすことです。問題は、カートに追加するオプションに、カートに追加するアイテムの数を選択するオプションがあることです。 したがって、3つのアイテムを選択してボタンをクリックすると、ブロブは1つだけ増加します。

フロントエンドから追加されるアイテムの数を取得する方法を作成できますが、それは不要だと思います。 jqueryを使用してPHPセッションから合計数を取得できるようにしたいので、アイテムを追加または削除するたびに、サーバーから動的に現在の数を取得します。

これまでに行ったことは、カートの合計をエコーするreloadCart.phpファイルを作成することです。これがコードです

<?php
require('../../../wp-blog-header.php');
global $woocommerce;
echo $woocommerce->cart->get_cart_contents_count();
?>

このページにアクセスすると、現在のアイテムの合計がエコーされますが、jqueryからこのデータを取得できません。AJAXを最後に使用してからしばらく経ちました。また、非常に長い間Webプロジェクトに取り組んでいません私が作っているAJAX呼び出しは正しいです。

jqueryのget()およびpost()関数と通常のajax()関数を使用してみましたが、何も機能しないようです。 誰か助けてもらえますか?

$(".ajax_add_to_cart").click(function () {
   /*$("#bag-total").html(function () {
        var bagTotal = parseInt($(this).html());
        return ++bagTotal;
    });*/
    alert('clicked');
    $.get("<?php echo get_template_directory_uri(); ?>/reloadCart.php", function(data){
        alert("Data: " + data);
    });
}); 

コメントされている行は、フロントエンドから現在のカート番号を取得してカートの合計を追加するために以前使用していたものです。

任意の助けをいただければ幸いです。 前もって感謝します!


適切なajax実装が必要な場合は、次の方法があります。

functions.phpで

add_action('wp_ajax_cart_count_retriever', 'cart_count_retriever');
add_action('wp_ajax_nopriv_cart_count_retriever', 'cart_count_retriever');
function cart_count_retriever() {
    global $wpdb;
    echo WC()->cart->get_cart_contents_count();
    wp_die();
}

スクリプトファイルで(スクリプトファイルをエンキューし、ajaxオブジェクトをスクリプトに渡したと仮定します。このブロックを setInterval または他のjqueryアクションに配置する必要もあります。

var data = {
  'action': 'cart_count_retriever'
};
jQuery.post(ajax_object.ajax_url, data, function(response) {
  alert('Got this from the server: ' + response);
});




woocommerce