Wordpress에서 사용자 정의 쿠키 설정


13

Wordpress 사이트 내의 특정 페이지로 사용자를 다시 라우팅하도록 쿠키를 설정하려고합니다.

이 두 가지에 대한 조언을 원합니다.

  1. 리디렉션을 처리하기 위해 콘텐츠를로드하기 전에 Wordpress PHP 파일에서 쿠키를 확인 해야하는 곳은 어디입니까? 이것이 다른 것들보다 좋은 파일이 있습니까?
  2. Wordpress 내에서 쿠키를 올바르게 설정하려면 어떻게합니까? setcookie('cookie_name', 'cookie_value', time()+4000);쿠키를 내 시스템에 저장하지 않는 것 같습니다.

아, 이것을 init ()에 연결해야한다는 것을 깨달았습니다. 솔루션 : 쿠키를 설정하고 확인하는 functions.php에 함수를 만들었습니다. 함수를 정의한 후 함수 외부에서이를 올바르게 호출하려면 다음을 호출하십시오. add_action ( 'init', 'function-name');

4
당신은 당신의 자신의 질문에 대답 할 수 있습니다 ...
40XUserNotFound

2
사실, 그것은 분명히 권장됩니다. 직접 답하십시오. 또한 WordPress.SE로 보내는 것이 더 적절합니다.

고마워요-Wordpress 영역이 있다는 것을 몰랐습니다. 팁이 자신에게 답해 주셔서 감사합니다. :) APpreciated, + 1s.
Atticus

답변:


17

1- 'init'후크와 같은 출력 전에 호출되는 후크를 사용하여 쿠키를 확인하고 리디렉션을 수행 할 수 있습니다.

<?php

// Hook the function "redirect()" on to the "init" action
add_action('init', 'redirect');

// redirect() may redirect the user depending on the cookies he has
function redirect(){
  /* CODE */
}

?>

2-쿠키를 설정하는 가장 좋은 방법은 다음과 같이 'init'후크를 사용하는 것입니다.

<?php

add_action('init', 'my_setcookie');

// my_setcookie() set the cookie on the domain and directory WP is installed on
function my_setcookie(){
  $path = parse_url(get_option('siteurl'), PHP_URL_PATH);
  $host = parse_url(get_option('siteurl'), PHP_URL_HOST);
  $expiry = strtotime('+1 month');
  setcookie('my_cookie_name_1', 'my_cookie_value_1', $expiry, $path, $host);
  /* more cookies */
  setcookie('my_cookie_name_2', 'my_cookie_value_2', $expiry, $path, $host);
}

?>

www.example.com/blog에 블로그가 있으면 coockie를 사용할 수 없습니다.

  • www.example.com
  • www.example.com/store
  • example.com
  • www2.example.com
  • ...

최신 정보

Andre R Kohl의 답변에서 알 수 있듯이 COOKIE_PATH 및 COOKIEDOMAIN 상수를 스스로 알아내는 대신 사용할 수 있어야합니다. drzaus


'my_cookie_1'변수 대신 Firstname, LastName, Random1, Random2와 같은 여러 변수를 넣는 방법은 무엇입니까?
Damainman

1
더 추가하기setcookie()
Nabil Kadimi

쿠키는 쿠키 당 하나의 변수 만 보유한다는 것을 알지 못했습니다. 코드를 적게 사용하기 위해 위의 시간과 URL 코드를 가질 필요없이 여러 쿠키를 설정하는 방법이 있습니까? 변수에 넣을까요?
Damainman

당신은 또한 사용할 수 있어야 COOKIEPATH하고 COOKIEDOMAIN상수를 그냥에서 발견되는, 자신 그들을 계산보다는 앙드레 R 콜의 대답
drzaus

수정 : COOKIE_DOMAIN
drzaus

11

당신은 아마 상수를 사용해야 COOIKEPATH하고 COOKIE_DOMAINWP 3.0 있기 때문에 기존의

setcookie("your_cookie", $your_value, time()+3600, COOKIEPATH, COOKIE_DOMAIN);

7

아, 이것을에 연결해야한다는 것을 깨달았습니다 init().

솔루션 : 쿠키를 설정하고 확인하는 functions.php에 함수를 만들었습니다. 함수를 정의한 후 함수 외부에서 다음을 호출하면 올바르게 작동합니다.

add_action('init', 'function-name'); 

1

이 방법은 효과가 있었다 :

    add_action( 'init', 'function-to-setcookie' ); 

    function function-to-setcookie(){

        //use condition here , in which page you eant to set cookie
        //choose a page where you want the cookie to be set
        $pageurl = get_option('siteurl').'/set-cookie-page'; 

       // use a function to get current page url and use condition 
       //to match it with the desired page where you want to set cookie 
       if ( $pageurl === current_page_url() ) {
           setcookie( 'cookie_name', 'cookie_value', $expiryTime, $cookiepath, $siteurl );
         }

    }

코드 형식을 수정하십시오.
Jevuska

또한 소스에 관한 작은 내용이 정말 도움이됩니다.
bueltge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.