Чего я пытаюсь достичь:
- Если пользователь посещает магазин с параметром URL-адреса ?token=AX4HN, я
устанавливаю файл cookie для хранения токена скидки в течение часа. - Скидка на основе токена должна сохраняться, пока пользователь перемещается по
сайту и добавляет товары в корзину.
- В Internet Explorer скидка применяется правильно при первом
посещении странице продукта с использованием токена, но когда я нажимаю «Добавить в корзину»,
цена возвращается к обычная цена. - Эта проблема возникает только в Internet Explorer. Другие браузеры
работают должным образом.
Код: Выделить всё
function set_token_cookie() {
if (isset($_GET['token']) && $_GET['token'] === 'AX4HN') {
setcookie('discount_token', 'AX4HN', time() + 3600, '/'); Cookie lasts for 1 hour
$_COOKIE['discount_token'] = 'AX4HN'; // Set it immediately for current request
}
}
add_action('init', 'set_token_cookie');
Код: Выделить всё
function has_valid_token() {
return (isset($_GET['token']) && $_GET['token'] === 'AX4HN') ||
(isset($_COOKIE['discount_token']) && $_COOKIE['discount_token'] === 'AX4HN');
}
Код: Выделить всё
add_filter('woocommerce_product_get_price', 'custom_price_discount', 20, 2);
function custom_price_discount($price, $product) {
$discount_rate = 0.8; // 20% discount
if (has_valid_token() && !$product->is_on_sale()) {
return floatval($price) * $discount_rate;
}
return $price;
}
- Цена со скидкой отображается правильно на странице товара. в IE.
- Как только я нажимаю «Добавить в корзину», на странице корзины отображается обычная цена
вместо этого со скидкой. - Похоже на Internet Explorer неправильно читает файл cookie
после перехода с начальной страницы.
Как я могу гарантировать, что скидка останется неизменной в Internet Explorer даже после добавления продуктов в корзину? Есть ли лучший способ управлять скидками на основе токенов на сайте, совместимый с Internet Explorer?
Будем очень благодарны за любую помощь, как это исправить!
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-explorer