是否在查看特定页面时放置Cookie?

时间:2012-06-25 作者:Wicky

我正在尝试将新网站访问者引导到自定义注册页面for the their first visit only. 注册会收集与即将举行的活动相关的详细信息not 旨在将访问者注册为WordPress安装的用户。

注册页面包含一个Gravity表单,提交后会重定向到感谢页面。

我想知道正确的方法place a cookie in WordPress only when the visitor lands on the thank you page.

提前谢谢。

注意:

我还应该说,我已经在函数中添加了以下内容。php文件:

/* SET NEW USER COOKIE */
function set_newuser_cookie() {
    if (!isset($_COOKIE[\'newtcpa_visitor\'])) {
        setcookie(\'newtcpa_visitor\', 1, time()+3600*24*100, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( \'init\', \'set_newuser_cookie\');
我不确定COOKIEPATH&;COOKIE\\u域。我尝试了以下设置,但在隔离WP模板/页面方面运气不太好:

setcookie(\'newtcpa_visitor\', 1, time()+3600*24*100, \'/\', \'.mydomain.com\', false);
以及

setcookie(\'newtcpa_visitor\', 1, time()+3600*24*100, \'/\', \'.mydomain.com/thank-you/\', false);
对多次编辑深表歉意。。。WordPress答案的第一篇帖子

2 个回复
SO网友:Wicky

我已经想出了一个解决办法。也许有一种更优雅的方式来实现这一点,但我很难让其他任何东西发挥作用。

我已将以下代码放在标题的开头。所有页面的php文件。目标是在访问网站内容之前,通过活动注册页面引导网站访问者:

$currentURL = "http://" . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];

if ( $currentURL == \'http://mydomain.com/website-registration/\' ) :

elseif ( $currentURL != \'http://mydomain.com/thank-you/\' ) :

    if ( ! isset( $_COOKIE["tcpa_newvisitor"] ) ) :
        header( "Location: http://mydomain.com/website-registration/" );
    endif;

else :

    if ( ! isset( $_COOKIE[\'tcpa_newvisitor\'] ) ) :
        setcookie( \'tcpa_newvisitor\', 1, time() + 3600 * 24 * 100, COOKIEPATH, COOKIE_DOMAIN, false);
        header( "refresh:1;url=http://mydomain.com" );
    endif;

endif;
代码以$currentURL的形式收集当前页面。如果当前页面是目标网站注册页面,则不会发生任何事情。如果URI不是感谢页面,并且尚未设置cookie,则浏览器将重定向到注册页面。提交注册页面上的表单后,用户将被引导到设置cookie的感谢页面。最后,1秒后,感谢页面刷新,重定向到主页。访问者现在可以正常查看站点。

SO网友:Frankey

最好的做法是将此类功能放在主题功能中。php作为动作f.e。

add_action(\'init\', \'your_own_function\', 1);

function your_own_function(){

  $currentURL = "http://" . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];

  if ( $currentURL == \'http://mydomain.com/website-registration/\' ) :

  elseif ( $currentURL != \'http://mydomain.com/thank-you/\' ) :

    if ( ! isset( $_COOKIE["tcpa_newvisitor"] ) ) :
        header( "Location: http://mydomain.com/website-registration/" );
    endif;

  else :

    if ( ! isset( $_COOKIE[\'tcpa_newvisitor\'] ) ) :
        setcookie( \'tcpa_newvisitor\', 1, time() + 3600 * 24 * 100, COOKIEPATH, COOKIE_DOMAIN, false);
        header( "refresh:1;url=http://mydomain.com" );
    endif;

  endif;

}

结束

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!