2015-12-07 47 views
1

這裏是我的代碼:創建cookie時用戶將打開頁面第二次WordPress的

function set_newuser_cookie() { 
    if (!is_admin() && !isset($_COOKIE['domain_newvisitor'])) { 
     setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false); 
    } 
} 
add_action('init', 'set_newuser_cookie'); 

有了這個代碼的cookie工作得很好,但我通過這段JavaScript代碼檢查cookie的所有腦幹時(需要檢查我們是否有餅乾或不要使用它在JavaScript代碼中的其他地方):

var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/); 
if(isCookie){ 
    console.log('yes'); 
}else{ 
    console.log('no'); 
} 

它總是顯示在控制檯日誌「是」,甚至當我刪除Cookie,並訪問網站的第一次。只有當用戶第二次打開頁面時,我如何才能更改php代碼來創建cookie。

+0

只想知道你是否每次運行第一個代碼後都運行第二塊? –

+0

實際上是@A.J – aidadev

+0

不應該是其他方式檢查cookie是否不存在然後創建其他的離開它? –

回答

1

您設置cookie爲:

function set_newuser_cookie() { 
    if (!is_admin() && !isset($_COOKIE['domain_newvisitor'])) { 
     setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false); 
    } 
} 
add_action('init', 'set_newuser_cookie'); 

解釋:如果cookie設置已經=>!isset($_COOKIE['domain_newvisitor'])和用戶是不是管理員要設置的cookie。


在這之後它正在檢查它的cookie退出:

var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/); 
if(isCookie){ 
    console.log('yes'); 
}else{ 
    console.log('no'); 
} 

那麼cookie將退出每次。正如你第一次創建它並檢查它是否退出。


您應該檢查是否餅乾退出然後存儲它的變量和使用它的不那麼創建它:

function set_newuser_cookie() { 
     if (!is_admin() && !isset($_COOKIE['domain_newvisitor'])) { 
      setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false); 
     }else 
     if(!is_admin() && isset($_COOKIE['domain_newvisitor'])){ 
      $CookieValue = $_COOKIE['domain_newvisitor'] 
      //echo or return this $CookieValue 
     } 
    } 


add_action('init', 'set_newuser_cookie'); 

現在,您可以通過從服務器傳遞到客戶端的JS使用$ CookieValue。