我有几个月的下面的代码,它运行得非常好,但无中生有,没有理由无法工作。我已经多次检查过代码,但没有找到出错的运气。
请你帮我找出问题所在。
这是Chrome中Cookie窗口的屏幕截图
Screen shot from Cookies Window
问题是以下cookie的值为零。
setcookie("bookinginfo[cart_discount]", $cart_discount, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[cart_price]", $cart_price, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
这个根本没有设置而且缺失了。
setcookie("bookinginfo[tour_price]", $tour_final_price, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
完整的功能代码如下。
function wpcf7_save_data($wpcf7_data)
{
if ( $wpcf7_data->id !== 5 )
return;
$submission = WPCF7_Submission::get_instance();
if ($submission)
{
$posted_data = $submission->get_posted_data();
}
$tour_date = $posted_data['tour-date'];
$adult_no = $posted_data['no-adult'];
$child_no = $posted_data['no-child'];
$url = getenv('HTTP_REFERER');
$title = get_the_title(url_to_postid($url));
$id = get_page_by_title($title, OBJECT, 'product');
$tour_id = $id->ID;
$tour_price = get_post_meta($tour_id, 'tour_price', true);
$tour_discount_price = get_post_meta($tour_id, 'tour_discount_price', true);
if(!empty($tour_discount_price))
{
$tour_final_price = $tour_discount_price;
}
else
{
$tour_final_price = $tour_price;
}
if ($adult_no >= 15)
{
$adults_price = $adult_no * $tour_final_price * 0.4;
}
else
if ($adult_no >= 7)
{
$adults_price = $adult_no * $tour_final_price * 0.6;
}
else
if ($adult_no >= 3)
{
$adults_price = $adult_no * $tour_final_price * 0.8;
}
else
{
$adults_price = $adult_no * $tour_final_price;
}
$children_price = $child_no * $tour_final_price * 0.5;
$total_pax = $adult_no + $child_no;
$cart_price = number_format(($adults_price + $children_price),0,'',',');
$cart_discount = ($total_pax * $tour_final_price) - $cart_price;
setcookie("bookinginfo[tour_date]", $tour_date, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[cart_discount]", $cart_discount, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[cart_price]", $cart_price, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[tour_price]", $tour_final_price, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[tour_id]", $tour_id, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[adult_no]", $adult_no, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
setcookie("bookinginfo[child_no]", $child_no, time() + (10 * 365 * 24 * 60 * 60) , "/", ".tourexperts-eg.com", true, true);
$wpcf7_data->skip_mail = true;
global $woocommerce;
WC()->cart->empty_cart( true );
WC()->cart->add_to_cart($tour_id,$total_pax);
}
add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );