Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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
Ajax 基于日期筛选Woocommerce中的配送选项_Ajax_Wordpress_Session_Woocommerce_Shipping - Fatal编程技术网

Ajax 基于日期筛选Woocommerce中的配送选项

Ajax 基于日期筛选Woocommerce中的配送选项,ajax,wordpress,session,woocommerce,shipping,Ajax,Wordpress,Session,Woocommerce,Shipping,所以,我有一个复杂的航运问题,我需要解决的商业 我需要完成的三件事是: 基于日期选择器筛选装运方法 在基于上述日期进行筛选后,使用可用的最低装运方法重置WC()->session->set('selected_shipping_methods'),然后将所选方法设置为$selected_method 根据价格筛选装运方法 因此,在这三种情况中,1和3是简单的。我正在发射$('body')。触发器('update_checkout');当选择了一个日期,并将其发送到WC\u AJAX->updat

所以,我有一个复杂的航运问题,我需要解决的商业

我需要完成的三件事是:

  • 基于日期选择器筛选装运方法
  • 在基于上述日期进行筛选后,使用可用的最低装运方法重置WC()->session->set('selected_shipping_methods'),然后将所选方法设置为$selected_method
  • 根据价格筛选装运方法
  • 因此,在这三种情况中,1和3是简单的。我正在发射$('body')。触发器('update_checkout');当选择了一个日期,并将其发送到WC\u AJAX->update\u order\u review方法。然后重新计算所有相关数据/方法,并返回代码段

    但是,在筛选我的配送方法并尝试将最便宜的设置为第一种,并将会话更改为匹配后,我遇到了问题。似乎我无法提前更改会话值,以便在第一次尝试时计算出正确的总数。在第二个ajax请求或页面刷新时,会话将被设置为正确的方法

    那么,要重置会话,让它在第一次尝试时侦听新值,我需要在堆栈的最上面多远?我需要能够访问$\u POST数据、当前可用的方法,并能够在一个位置重置会话(如果可能),但如果没有,我可以在两个位置运行相同的代码,以希望获得正确的签出总数和方法集

    目前,我一直在cart-shipping.php中工作,我已经覆盖了其中的一个函数来应用一些自定义筛选,如下所示。 这就完成了1和3,但我在这里遇到了问题。如果有人知道可靠地重置会话的方法,那就解决了我所有的问题

    function woo_new_cart_shipping_html()
    {
       global $woocommerce;
    
       $data_stream = extract_data_from_str( $_POST['post_data'] );
    
       $packages      = $woocommerce->shipping->get_packages();
       $chosen_method = isset( $woocommerce->session->chosen_shipping_methods[0] ) ? $woocommerce->session->chosen_shipping_methods[0] : '';
    
       foreach ( $packages as $i => $package )
       {
          $methods = apply_filters( 'woo_filter_available_methods_by_date',       $package['rates'], $data_stream );
    
           wc_get_template( 'cart/cart-shipping.php', array('package' => $package,
                                                 'available_methods' =>           apply_filters( 'woo_sort_shipping_methods_by_cost', $methods ),
                                                 'show_package_details' => ( sizeof( $packages ) > 1 ),
                                                 'index' => $i,
                                                 'chosen_method' =>      apply_filters( 'woo_set_lowest_shipping_method', $chosen_method, $methods, $data_stream ) ) );
    
       }
    }