Ответы пользователя по тегу HTTP Cookies
  • Простейшая работа с cookie?

    Snova_s_vami
    @Snova_s_vami
    JavaScript ES5-8, TypeScript, Angular
    Ой, случайно раньше написания полного ответа отправил. В общем, на вордпрессе недавно делал, суть простая, проверяем в PHP значение куки вот так и записываем в какую-то переменную подходящее значение на основе значения куки. Ничего сложного.
    $default_phone = get_theme_mod('phone_default'); 
    $moscow_phone = get_theme_mod('phone_moscow');
    $spb_phone = get_theme_mod('phone_spb');
    $voronezh_phone = get_theme_mod('phone_voronezh');
    
    $user_region = in_array('uLocation', $_COOKIE) ? $_COOKIE['uLocation'] : null;
    $active_phone = null;
    
    if ($user_region) {
        if ($user_region === 'Москва' && $moscow_phone) $active_phone = $moscow_phone;
        else if ($user_region === 'Санкт-Петербург' && $spb_phone) $active_phone = $spb_phone;
        else if ($user_region === 'Воронежская' && $voronezh_phone) $active_phone = $voronezh_phone;
        else $active_phone = $default_phone;
    } else {
        $active_phone = $default_phone;
    }


    В плане скрипта который создает куку, у меня пара проверок, по IP была проверка города и установка региона с помощью DDATA, в вашем случае, как я понял, всё проще, но суть такая, записываете куку, но не забывайте о проверках, что она уже установлена, чтобы не грузить лишний раз. В примере ниже просто ставится кука по имени/значению + expires для даты чтобы раз в неделю сбрасывалась. Можете обойтись и без этого. Вот:

    const cookieName = 'uLocation';
    const addCookie = (cookieVal) => 
       document.cookie = `${cookieName}=${cookieVal.trim()}; expires=${new Date(new Date().getTime() + 3600 * 1000 * 24 * 7).toUTCString()}`;
    Ответ написан
    7 комментариев