2014-09-09 4 views
0

현재 특정 페이지를 기반으로 쿠키를 설정하려고합니다.어떻게 WordPress의 페이지 ID를 기반으로 쿠키를 설정할 수 있습니까?

내 기능 파일에서 일반 쿠키를 설정하고 init 후크에서 add_action()을 호출 할 수 있습니다.

/* functions.php */  
function setCookies(){ 
     global $post; 
     setcookie('test', 'it works'); 
     var_dump($post->ID); 
    } 

    add_action(init, setCookies(), 10); 

var_dump는 NULL을 반환합니다.

늦게 충분히 루프 내부에있어 때까지 $post 변수가 설정되지 않은 global $post;

+0

(파일) 코드를 넣었습니까? –

+0

functions.php에서이를 나타 내기 위해 편집을했습니다. – BeardedInBindary

답변

0

에서 정보를 쿠키를 설정하는 시간에 실행 만하는 후크가있다. 대부분의 테마는 이미 도착할 때까지 이미 출력물을 생성하므로 쿠키를 설정하는 데이 테마를 사용할 수 없습니다.

그러나 쿼리가 반환 된 후에 작업에 연결하고 사용자 지정 루프를 사용하여 쿠키를 설정할 수 있어야합니다. 이런 식으로 뭔가를 시도 :

function setCookies() { 
    global $wp_query; 
    if ($wp_query->have_posts()) { 
     $post_id = $wp_query->current_post; 
     setcookie('post_id', $post_id); 
    } 
    $wp_query->rewind_posts(); 
    return; 
} 
add_action('wp', 'setCookies', 10); 

Actions Run During a Typical Request과 사본의 WP_Query Class Reference 참조하십시오.

+1

왜'rewind_posts'가 필요한가요? –

관련 문제