За последние 24 часа нас посетили 21180 программистов и 1222 робота. Сейчас ищут 696 программистов ...

Как правильно записать в Cookie при условии......

Тема в разделе "Wordpress", создана пользователем sokol86922, 26 июл 2023.

  1. sokol86922

    sokol86922 Активный пользователь

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    Подскажите как правильно написать код php и поместить в function.
    Что нужно.
    Если первый раз человек зашел на сайт на главную страница ru версии его нужно принудительно перевести на другую страницу сайта редиректом. Это нужно запомнить и больше его не переводить в следующий раз когда зайдет на сайт.

    Как хочу сделать.
    при входе на сайте узнать его ip записать в Cookie. Если человек первый раз, перенаправить его на другую страницу, если он уже заходил ранее с этого ip то ни чего не делать

    у меня есть рабочий код на пхп, простой, но наглядный пример что хочу сделать. Пробую переписать для вордпреса не получается . Помогите пожалуйста его переписать для Wordpress

    PHP:
    1. $my_lang = pll_current_language();
    2. if ( $my_lang == "ru") {  
    3.    
    4.      if( isset($_COOKIE["NameIP"])){
    5.          echo '';
    6.         }
    7.         else{
    8.            setcookie("NameIP", $_SERVER['REMOTE_ADDR'], time()+60*60*24*30);
    9.            header("Location: https://site.com/rutwo/"); exit();
    10.          
    11.         }
    12.  
    13. } else {
    14.    echo '';
    15. }
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    865
    Симпатии:
    134
    не надо привязываться к IP, он может меняться, просто куку-долгожителя взводи.
    что означают глубокомысленные
    PHP:
    1. echo'';
    ?
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Перевожу что написал don.bidon:
    isset($_COOKIE["NameIP"]) — это и есть проверка, что человек впервые или не впервые зашел. Независимо от того что там в этой переменной. Можешь туда хоть слово "буй" записать, неважно.
    --- Добавлено ---
    Я бы еще setcookie делал бы именно на той странице, куда происходит переадресация, а не здесь.
    -
     
  4. sokol86922

    sokol86922 Активный пользователь

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    ок , как правильно для ворпресса написать эту функцию. потому что простой пхп он не понимает пишет ошибка. подскажите плиз
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Что именно ты делаешь и какую ошибку пишет?
     
  6. sokol86922

    sokol86922 Активный пользователь

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    Если я пишу так, он перенаправляет, но не записывает куки. Когда следующий раз захожу, он все равно перенаправляет и не делает проверку, заходил ли я ранее или нет.

    Как правильно переписать код, чтобы заносил куки и когда следующий раз зайти он делал проверку и не перенаправлял ? и как правильно запустить эту функцию только на главной странице. Спасибо за ответ
    PHP:
    1. function setting_t_cookie() {
    2. if( isset($_COOKIE["NameIP"])){
    3.          echo '';
    4.         }
    5.         else{
    6.          
    7.              setcookie( "NameIP", $_SERVER['REMOTE_ADDR'], 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
    8.  
    9.              wp_redirect( 'https://site.com/news/' );
    10.              exit;
    11.                    
    12.   }
    13.    add_action( 'init', 'setting_t_cookie' );
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Ну а ошибку какую пишет? Пожалуйста отвечай полностью, а не выборочно )))
    --- Добавлено ---
    "Как правильно писать для вордпреса" я не знаю. Но куки они и в африке куки, должны работать, если не косячить.
    --- Добавлено ---
    Еще я бы посмотрел чему равны константы DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN. Если там неправильные значения, кука не установится.
     
  8. sokol86922

    sokol86922 Активный пользователь

    С нами с:
    3 мар 2017
    Сообщения:
    46
    Симпатии:
    2
    Выдает эту ошибку. Мне кажется не правильно подается команда на выполнение. Ничего не записывается
    Fatal error: Uncaught Error: Call to undefined function add_action() in /home/xxhost/xx.ru/www/index.php:16 Stack trace: #0 {main} thrown in /home/xxhost/xx.ru/www/index.php on line 16

    если выполнять код на простом php без function то все работает. Но на движке wp нет
     
  9. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Скобочки фигурные посчитайте.