Скидка на основе токенов WooCommerce действует до добавления в корзину в Internet ExplorerPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Скидка на основе токенов WooCommerce действует до добавления в корзину в Internet Explorer

Сообщение Anonymous »

Я пытаюсь реализовать систему скидок на основе токенов в своем магазине WooCommerce. Он отлично работает в большинстве браузеров (Chrome, Firefox, Edge), но у меня возникают проблемы с Internet Explorer (IE). Скидка применяется правильно, если токен находится в URL-адресе, а цены со скидкой отображаются на страницах магазина и продукта. Однако как только я добавляю товар в корзину, цена возвращается к обычной цене.
Чего я пытаюсь достичь:
  • Если пользователь посещает магазин с параметром URL-адреса ?token=AX4HN, я
    устанавливаю файл cookie для хранения токена скидки в течение часа.
  • Скидка на основе токена должна сохраняться, пока пользователь перемещается по
    сайту и добавляет товары в корзину.
Проблема:
  • В Internet Explorer скидка применяется правильно при первом
    посещении странице продукта с использованием токена, но когда я нажимаю «Добавить в корзину»,
    цена возвращается к обычная цена.
  • Эта проблема возникает только в Internet Explorer. Другие браузеры
    работают должным образом.
Шаг 2. Установите файл cookie, если токен присутствует в URL

Код: Выделить всё

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');
Шаг 3. Проверьте, действителен ли токен

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Скидка на основе токенов WooCommerce действует до добавления в корзину в Internet Explorer
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как скрыть/удалить кнопку «Добавить в корзину» в Woocommerce после добавления товара в корзину
    Anonymous » » в форуме Php
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Internet Explorer не загружает js-файл
    Anonymous » » в форуме Jquery
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Firefox и Chrome добавляют подчеркивание до и после имени файла, в то время как Internet Explorer работает нормально
    Гость » » в форуме JAVA
    0 Ответы
    60 Просмотры
    Последнее сообщение Гость
  • CSS не загружается в Internet Explorer
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»