Php 刷新页面后,Ajax第一次无法使用wordpress/woocommerce
我在function.php文件中有一些代码。我有一个ajax函数,在会话中设置变量,并在function.php中的某个钩子中使用该函数 阿贾克斯: 下面是我用来检查会话变量是否存在的函数,这取决于我是否有一些逻辑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($
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();
}