Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Woocommerce中的Ajaxify自定义迷你购物车小部件_Php_Wordpress_Woocommerce_Widget_Cart - Fatal编程技术网

Php Woocommerce中的Ajaxify自定义迷你购物车小部件

Php Woocommerce中的Ajaxify自定义迷你购物车小部件,php,wordpress,woocommerce,widget,cart,Php,Wordpress,Woocommerce,Widget,Cart,我已经在我的网站上添加了一个菜单,其中显示了购物车的总数以及每种商品的详细信息、数量和价格。这仅在手动刷新页面或将页面重定向到购物车时有效 global $woocommerce; $items = $woocommerce->cart->get_cart(); $currency = get_woocommerce_currency_symbol();

我已经在我的网站上添加了一个菜单,其中显示了购物车的总数以及每种商品的详细信息、数量和价格。这仅在手动刷新页面或将页面重定向到购物车时有效

                    global $woocommerce;

                    $items = $woocommerce->cart->get_cart();
                    $currency = get_woocommerce_currency_symbol();

                    echo '<li><a href="https://www.mywebsite.com/cart/" class="parents"><i class="fas fa-shopping-cart"></i> Cart - ' .  WC()->cart->get_cart_total() . '</a>';
                    echo '<ul class="mega_menu cart">';
                    echo '<li class="mega_sub">';
                    echo '<ul>';

                    foreach($items as $item => $values) {
                      $_product = $values['data']->post;
                      $link = get_permalink($_product);
                      $image = get_the_post_thumbnail($_product);
                      $price = get_post_meta($values['product_id'] , '_price', true);
                      $total = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
                      echo '<li>' . $image . '<a href="' . $link . '">' . $_product->post_title . ' <br /><span style=" text-transform:lowercase;"> ' . $currency.$price . ' x ' . $values['quantity'] .'</span></a></li>';
                    }

                    echo '<li><a href="https://www.mywebsite.com/cart/">Go to Checkout</a></li>';
                    echo '</ul></li></ul>';
global$woodcommerce;
$items=$woocommerce->cart->get_cart();
$currency=get_woocommerce_currency_symbol();
回音“
  • ”; echo'
      ; echo'
    • ; 回声“
        ”; foreach($items作为$item=>$value){ $\u product=$values['data']->post; $link=get_permalink($\产品); $image=获取\u post\u缩略图($\u产品); $price=get_post_meta($value['product_id','u price',true); $total=floatval(preg#u replace('.[^\d.]#','.$woocommerce->cart->get_cart_total()); 回显“
      • ”.$image.“
      • ”; } 回音“
      • ”; 回音“
    ”;
  • 我已经找到了这个功能,但它只更新购物车的总数和价格

    我是否需要重新编写子菜单的代码,或者是否有其他解决方案可以在AJAX函数上更新购物车项目


    谢谢

    您的代码已经过时,有错误和错误。另外,Woocommerce已经包含了一个可用的迷你购物车小部件(带有一个可编辑的模板)

    1) 替换您的html/php代码(我想是在themes heard.php文件中):

    //echo'
      ';//(用于测试) 回音“
    • ”; echo'
        ; echo'
      • ; 回声'; ##Ajax刷新:迷你购物车小部件 woocommerce_mini_cart(); 回声'; 回音“
      ”; //回音“
    ”;//(用于测试)

    2) Ajax将刷新迷你购物车小计和小部件的代码:

    add_filter( 'woocommerce_add_to_cart_fragments', 'wc_mini_cart_ajax_refresh' );
    function wc_mini_cart_ajax_refresh( $fragments ){
        ## 1. Refreshing mini cart subtotal amount
        $fragments['#mcart-stotal'] = '<span id="mcart-stotal">'.WC()->cart->get_cart_subtotal().'</span>';
    
        ## 2. Refreshing cart subtotal
        ob_start();
        echo '<span id="mcart-widget">';
        woocommerce_mini_cart();
        echo '</span>';
        $fragments['#mcart-widget'] = ob_get_clean();
    
        return $fragments;
    }
    
    add_过滤器('woocommerce_add_to_cart_fragments'、'wc_mini_cart_ajax_refresh');
    函数wc\u mini\u cart\u ajax\u refresh($fragments){
    ##1.刷新迷你购物车小计金额
    $fragments['#mcart stotal']=''.WC()->cart->get_cart_subtotal()';
    ##2.刷新购物车小计
    ob_start();
    回声';
    woocommerce_mini_cart();
    回声';
    $fragments['#mcart widget']=ob_get_clean();
    返回$fragments;
    }
    
    代码进入活动子主题(或活动主题)的function.php文件。测试和工作



    相关:

    谢谢,是的,我知道有一个minicart.php,这只是我一直坚持的AJAX刷新,我将尝试实现此解决方案,并在工作时进行更新。干杯
    add_filter( 'woocommerce_add_to_cart_fragments', 'wc_mini_cart_ajax_refresh' );
    function wc_mini_cart_ajax_refresh( $fragments ){
        ## 1. Refreshing mini cart subtotal amount
        $fragments['#mcart-stotal'] = '<span id="mcart-stotal">'.WC()->cart->get_cart_subtotal().'</span>';
    
        ## 2. Refreshing cart subtotal
        ob_start();
        echo '<span id="mcart-widget">';
        woocommerce_mini_cart();
        echo '</span>';
        $fragments['#mcart-widget'] = ob_get_clean();
    
        return $fragments;
    }