AJAX购物车更新woocommerce

时间:2018-02-19 16:05:06

标签: php wordpress templates woocommerce hook-woocommerce

如何在点击“更新购物车”按钮后通过AJAX更新购物车内容?

当我尝试使用$fragments函数时,它总是返回true ...我试过使用woocommerce钩子但是字段并没有通过AJAX刷新。我真的需要一些帮助,因为我被困住了。我已经尝试了一切......我相信可以通过“add_action”完成。救命? :)

add_action('woocommerce_checkout_after_customer_details','inputs_after_cart');

function inputs_after_cart($checkout) {

    global $woocommerce;
    $items = $woocommerce->cart->get_cart();

    $i = 1;

    foreach($items as $item => $values) { 
        $_product = $values['data']->post;
        $quantity = $values['quantity'];
        $x = 1;

        while ($x <= $quantity) {

         echo '<div class="col-12 refresh-tickets"><h3>' . $_product->post_title .  __(' - Bilet ' . $x . ' ') .'</h3>';


         $namevar = 'name'.$x;
         $emailvar = 'email'.$x;


         woocommerce_form_field($namevar , array(

        'type' => 'text',
           'label'      => __('Name'),
           'placeholder'   => _x('', 'placeholder', 'woocommerce'),
           'required'   => true,
           'class'      => array(''),
           'clear'     => true,
               ));

        woocommerce_form_field($emailvar, array(

        'type' => 'text',
           'label'      => __('E-mail'),
           'placeholder'   => _x('', 'placeholder', 'woocommerce'),
           'required'   => false,
           'class'      => array(''),
           'clear'     => true,
               ));

                echo '</div>';
                $x++;
            }

            $i++;
            } 

}

1 个答案:

答案 0 :(得分:0)

您可以编写侦听WooCommerce javascript触发事件的脚本,然后在触发时运行您自己的代码。这里是添加到购物车操作的javascript触发器。

$( document.body ).trigger( 'updated_cart_totals' );

使用此javascript进入该触发器。

$( document.body ).on( 'updated_cart_totals', function(event){
    //Run your own code here, use AJAX to call a PHP function to create new inputs
    $.ajax({
        url : 'http://yourwesbite.com/wp-admin/admin-ajax.php',
        type : 'post',
        data : {
            action : 'the_function_that_creates_inputs'
        },
        success : function( data ) {
            // data contains HTML inputs to display
        }
    });
});