Php 刷新页面后,Ajax第一次无法使用wordpress/woocommerce

Php 刷新页面后,Ajax第一次无法使用wordpress/woocommerce,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,我在function.php文件中有一些代码。我有一个ajax函数,在会话中设置变量,并在function.php中的某个钩子中使用该函数 阿贾克斯: 下面是我用来检查会话变量是否存在的函数,这取决于我是否有一些逻辑 add_action( 'woocommerce_cart_calculate_fees', 'bbloomer_checkout_radio_choice_fee', 20, 1 ); function bbloomer_checkout_radio_choice_fee($

我在function.php文件中有一些代码。我有一个ajax函数,在会话中设置变量,并在function.php中的某个钩子中使用该函数

阿贾克斯:

下面是我用来检查会话变量是否存在的函数,这取决于我是否有一些逻辑

add_action( 'woocommerce_cart_calculate_fees', 'bbloomer_checkout_radio_choice_fee', 20, 1 );


function bbloomer_checkout_radio_choice_fee($cart) {
 if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

global $wpdb;
global $post;
global $DOPBSP;
global $DOPBSPWooCommerce;
global $woocommerce;

  if ( is_page( 'cart' ) || is_cart()) {

         $radio  =  WC()->session->__unset( 'radio_chosen' );

          if($radio == '')
          {
              WC()->customer->set_is_vat_exempt( false );
          }
  }else{
       $radio = WC()->session->get( 'radio_chosen' );
  }
  //echo $radio; die;
if ($radio ==  "option_1") {

    $percentage = 40;

} elseif ($radio == "option_2") {

    $percentage = 0;    
 }
 if ( $woocommerce->cart->get_cart_contents_count() == 1) {

     // 40 %
    $discount = 0;
    foreach ($woocommerce->cart->get_cart() as $cart_item ) {

        $reservations_data = $wpdb->get_results($wpdb->prepare('SELECT * FROM '.$DOPBSPWooCommerce->tables->woocommerce.' WHERE token="%s" AND product_id=%d ORDER BY id',$cart_item['dopbsp_token'], $cart_item['product_id']));
        $main_data = $reservations_data[0]->data;
        $reservation = json_decode($main_data);
        $checkdate = $reservation->check_in;
        $checkoutdate = $reservation->check_out;

        $product_prices_excl_tax[] = wc_get_price_excluding_tax( $cart_item['data'] );

        if($checkdate != '' && $checkoutdate != ''){
            if($checkdate == $checkoutdate){
                //$cart_item['data']->set_tax_class( 'Zero rate' );
                if($percentage == 0){
                      if($radio != ''){
                        WC()->customer->set_is_vat_exempt( true );
                      }
                }else{
                    //echo "Fsf";die;
                     if($radio != ''){
                    WC()->customer->set_is_vat_exempt( false );
                     }
                }
            }
            else{
                $product = wc_get_product( $cart_item['product_id'] );
                $price = $product->get_price();
                $timeDiff = abs(strtotime($checkoutdate) - strtotime($checkdate));
                $numberDays = $timeDiff/86400;
                $numberDays1 = intval($numberDays);
                $main_discount = $price * $percentage / 100;
                $discount = $main_discount * $numberDays1;

                $woocommerce->cart->add_fee( "Rabais (".$percentage."%)", -$discount );
                if($percentage == 0){
                    if($radio != ''){
                    WC()->customer->set_is_vat_exempt( true );
                    }
                }else{
                    if($radio != ''){
                    WC()->customer->set_is_vat_exempt( false );
                    }
                }
            }
        }
    }
}

//wp_die();
}
现在真正的问题是,在刷新页面时,我检查了我得到的会话变量,但它没有显示效果,而且在刷新页面后,Ajax第一次也不起作用

任何帮助都会很好

   add_action('wp_ajax_woo_get_ajax_data','bbloomer_checkout_radio_choice_set_session' );
add_action( 'wp_ajax_nopriv_woo_get_ajax_data', 'bbloomer_checkout_radio_choice_set_session' );

function bbloomer_checkout_radio_choice_set_session() {
if ( isset($_POST['radio']) ){
    $radio = sanitize_key( $_POST['radio'] );
    WC()->session->set('radio_chosen', $radio );
    echo json_encode( $radio );
}
 die();
}
add_action( 'woocommerce_cart_calculate_fees', 'bbloomer_checkout_radio_choice_fee', 20, 1 );


function bbloomer_checkout_radio_choice_fee($cart) {
 if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

global $wpdb;
global $post;
global $DOPBSP;
global $DOPBSPWooCommerce;
global $woocommerce;

  if ( is_page( 'cart' ) || is_cart()) {

         $radio  =  WC()->session->__unset( 'radio_chosen' );

          if($radio == '')
          {
              WC()->customer->set_is_vat_exempt( false );
          }
  }else{
       $radio = WC()->session->get( 'radio_chosen' );
  }
  //echo $radio; die;
if ($radio ==  "option_1") {

    $percentage = 40;

} elseif ($radio == "option_2") {

    $percentage = 0;    
 }
 if ( $woocommerce->cart->get_cart_contents_count() == 1) {

     // 40 %
    $discount = 0;
    foreach ($woocommerce->cart->get_cart() as $cart_item ) {

        $reservations_data = $wpdb->get_results($wpdb->prepare('SELECT * FROM '.$DOPBSPWooCommerce->tables->woocommerce.' WHERE token="%s" AND product_id=%d ORDER BY id',$cart_item['dopbsp_token'], $cart_item['product_id']));
        $main_data = $reservations_data[0]->data;
        $reservation = json_decode($main_data);
        $checkdate = $reservation->check_in;
        $checkoutdate = $reservation->check_out;

        $product_prices_excl_tax[] = wc_get_price_excluding_tax( $cart_item['data'] );

        if($checkdate != '' && $checkoutdate != ''){
            if($checkdate == $checkoutdate){
                //$cart_item['data']->set_tax_class( 'Zero rate' );
                if($percentage == 0){
                      if($radio != ''){
                        WC()->customer->set_is_vat_exempt( true );
                      }
                }else{
                    //echo "Fsf";die;
                     if($radio != ''){
                    WC()->customer->set_is_vat_exempt( false );
                     }
                }
            }
            else{
                $product = wc_get_product( $cart_item['product_id'] );
                $price = $product->get_price();
                $timeDiff = abs(strtotime($checkoutdate) - strtotime($checkdate));
                $numberDays = $timeDiff/86400;
                $numberDays1 = intval($numberDays);
                $main_discount = $price * $percentage / 100;
                $discount = $main_discount * $numberDays1;

                $woocommerce->cart->add_fee( "Rabais (".$percentage."%)", -$discount );
                if($percentage == 0){
                    if($radio != ''){
                    WC()->customer->set_is_vat_exempt( true );
                    }
                }else{
                    if($radio != ''){
                    WC()->customer->set_is_vat_exempt( false );
                    }
                }
            }
        }
    }
}

//wp_die();
}