目前尝试让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;
的信息
答案 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 Request和WP_Query Class Reference。