我整天都在网上搜索我的问题的解决方案,但我看不到任何东西,因为我对编码一无所知。
我想做什么:
- 当有人访问我网站上的某个特定页面时,我想设置一个cookie,我们称之为第1页然后,当该访问者转到另一个不相关的页面(第2页)时,他/她会自动重定向到第3页(因为他们访问第1页时设置了cookie)。没有饼干的访客永远看不到第3页
到目前为止,我已经成功地在Wordpress函数中设置了cookie。php,通过插入以下内容:
function set_newuser_cookie() {
if (!isset($_COOKIE[\'subscriber\'])) {
setcookie(\'subscriber\', no, 0, COOKIEPATH, COOKIE_DOMAIN, false);
}
}
add_action( \'init\', \'set_newuser_cookie\');
我通过在函数中插入以下内容来定义重定向。php:
if (!isset ($_COOKIE[\'subscriber\']))
header ("Location: page2");
else
header ("Location: page3");
这就是我所能做到的。这不起作用,因为以上两项都不是特定于页面的。我只希望在访问者访问一个特定页面时设置cookie(或更改变量),然后在访问者访问另一个特定页面时重定向cookie。
这可行吗?
哦,顺便说一句,我在一个自我托管的Wordpress网站上。
非常感谢。
萨米
SO网友:s1lv3r
因此,代码中唯一缺少的部分就是检查当前所在的页面。is\\u page()函数是获取此上下文的好方法。
你可以这样尝试(我没有测试它,只是从脑海中写出来展示这个概念):
function set_newuser_cookie() {
if (!isset($_COOKIE[\'subscriber\']) && is_page(\'my-page-slug-page1\')) {
setcookie(\'subscriber\', no, 0, COOKIEPATH, COOKIE_DOMAIN, false);
}
}
add_action( \'init\', \'set_newuser_cookie\');
function my_cookie_redirect() {
if (isset($_COOKIE[\'subscriber\']) && is_page(\'my-page-slug-page2\')) {
wp_redirect(\'/page3\');
exit;
}
}
add_action(\'template_redirect\', \'my_cookie_redirect\', 1);
wordpress is\\u page()函数将页面id、页面slug或page\\u title作为参数。
http://codex.wordpress.org/Function_Reference/is_page您还应该始终在重定向后退出,因为否则用户将在重定向到第3页之前首先加载第2页
SO网友:Sammie
是的,是的,哈哈,达姆!你没有完全得到我想要的,这是我的错,因为我没有能够正确地解释它。我不想让访问者在任何时候被重定向到主页。
以下是我的意见:(2013年4月27日编辑)
不过我还是有问题。
问题是,它在我的mac电脑(chrome、safari和firefox)上可以完美地工作,但在我的电脑上却不能。在电脑上,它可以很好地设置cookie,但无论cookie是否设置,都会发生重定向。
新编辑:现在开始工作!谢谢大家。下面的代码可以完美地工作。
function set_newuser_cookie() {
global $post;
if (!isset($post->ID)) return;
if ($post->ID == 1 || $post->ID == 7 || $post->ID == 8 || $post->ID == 9)
{
if (!isset($_COOKIE[\'subscriber\'])) {
setcookie(\'subscriber\', no, 0, COOKIEPATH, COOKIE_DOMAIN, false);
}
}
if (isset($_COOKIE[\'subscriber\']) && $post->ID == 2 || $post->ID == 10) {
wp_safe_redirect(\'/page3/\');
exit;
}
}
add_filter(\'template_redirect\',\'set_newuser_cookie\',1);