如何在wordpress中根据页面ID设置cookie?

时间:2014-09-09 21:00:41

标签: wordpress

目前尝试让wordpress根据特定页面设置cookie。

我可以从我的函数文件中设置一个通用cookie,并在add_action()钩子上调用init

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

    add_action( init, setCookies(), 10); 

var_dump返回NULL

是否有一个挂钩会及时执行设置cookie,但是时间足以获得来自global $post;的信息

1 个答案:

答案 0 :(得分:0)

$post变量不会设置,直到您进入循环内部。到达那里时,大多数主题已经生成了输出,因此您无法使用它来设置cookie。

但是,您应该能够在返回查询后挂钩wp操作并使用您自己的自定义循环设置cookie。尝试这样的事情:

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 RequestWP_Query Class Reference