2012-05-16 4 views
1

내 wordpress 테마 header.php 파일에 쿠키를 설정하려고합니다.페이지에 기반한 테마 header.php에 쿠키를 설정하십시오 - wordpress

이것에 대한 약간의 정보를 찾았지만 실제로는 functions.php 파일을 사용하는 것 같습니다. 이것은 페이지를 기반으로 쿠키를 설정하기 때문에 실제로 옵션이 아닙니다.

나는이 작업을 어떻게 수행 할 수 있는지 또는 가능한 해결 방법이 무엇인지 궁금합니다.

여기 내 header.php 파일의 코드입니다.

<? 
// Set cookie 
if (is_page('437')) { 
    setcookie("DM", "mis", time()+31536000); 
} else if (is_page('441')) { 
    setcookie("DM", "w2p", time()+31536000); 
} 

echo $_COOKIE["DM"]; 
print_r($_COOKIE); 

// Check cookie to load style 
if (!is_front_page()){ 
    if (isset($_COOKIE["DM"])) { 
    if ($_COOKIE["DM"] == "mis") { ?> 
     <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/mis.css" /> 
    <? } else if ($_COOKIE["DM"] == "w2p") { ?> 
     <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/w2p.css" /> 
    <? } 
    } 
} 
?> 

답변

2

쿠키를 설정하면 클라이언트에 보내기 위해 대기열에 올려 놓지 만 $ _COOKIE 배열에는 추가하지 않습니다. $ _COOKIE 배열은 초기 요청 시간에 한 번만 생성되고 채워집니다. 얻으려는 쿠키는 클라이언트로 보내지고 다음 페이지에 대한 다음 요청에서 다시 보내지고 사용 가능합니다.

+0

437 또는 441 페이지를 볼 때 쿠키가 작동한다고 추가해야하지만 다른 페이지로 이동하면 쿠키에 값이없는 것 같지만 그 값을 제거하지 않았습니다. – Adam

+0

이전 요청시 설정되지 않았는지 확인합니다. PHP.net 매뉴얼에서 "일단 쿠키가 설정되면 $ _COOKIE 또는 $ HTTP_COOKIE_VARS 배열로 다음 페이지를로드 할 때 액세스 할 수 있습니다. $ _COOKIE와 같은 superglobals는 PHP 4.1.0에서 사용할 수 있습니다. $ _REQUEST에 존재합니다. "---> 설정된 쿠키는 내가 아는 한 새로운 페이지 로딩을 요구합니다. – Ray

+0

@Adam 및 this too : 다음에 쿠키가 표시되어야하는 페이지가로드 될 때까지는 쿠키가 표시되지 않습니다. 쿠키가 성공적으로 설정되었는지 테스트하려면 쿠키가 만료되기 전에 다음 로딩 페이지에서 쿠키를 확인하십시오. 만료 시간은 만료 매개 변수를 통해 설정됩니다. 쿠키의 존재를 디버그하는 좋은 방법은 단순히 print_r ($ _ COOKIE);를 호출하는 것입니다. – Ray