簡體   English   中英

通過functions.php的Wordpress Cookies在重新加載頁面之前不會讀取cookie嗎?

[英]Wordpress Cookies via functions.php doesn't read cookie until page re-load?

我正在使用wordpress並在functions.php中創建了一個cookie。

我的問題是,創建模板/頁面時,它不會被模板/頁面讀取,而是在第二頁面加載時讀取。

有沒有解決方法,以便在創建cookie時可以讀取它?

這是我當前在functions.php上的代碼:

<?php
function my_cookie() {
$myvalue = 'hello'; 
if (!isset($_COOKIE['myCookie'])) {
  setcookie("myCookie", $myvalue, time()+3600, "/", ".mydomain.com");
global $myglobal;
$_COOKIE['myCookie'] = $myglobal;

}
}
add_action( 'init', 'my_cookie');
?>

我想將搜索條件保存到cookie中,以防止用戶嘗試退出頁面並收到“您要重新提交嗎?”的問題。 消息,因此我將cookie設置如下,從而使我可以在第一頁加載時使用它們:

// Set cookie of posted values
add_action( 'init', 'set_new_cookie' );

function set_new_cookie()
{
    $COOKIE_NAME = 'my_cookie_name';

    $name     = $COOKIE_NAME;
    $expire   = LIFETIME;
    $path     = COOKIEPATH;
    $domain   = COOKIEDOMAIN;
    $secure   = false;
    $httponly = false;

    if ( $_POST )
    {
        $POST = array(
            'variable1' => $_POST['variable1'],
            'variable2' => $_POST['variable2'],
            'variable3' => $_POST['variable3'],
            'variable4' => $_POST['variable4']
        );

        foreach( $POST AS $key => $value )
        {
            // Set the cookie
            setcookie( $name."[$key]", $value, $expire, $path, $domain, $secure, $httponly );

            // Set the $_COOKIE global to have access to value on first page load
            $_COOKIE[$name][$key] = $value;
        }
    }
}

然后,您可以直接訪問:

print_r( @$_COOKIE['my_cookie_name'] );

這是設計使然。 使用PHP創建cookie時,它也不會設置$ _COOKIE中的超級全局變量。 cookie標頭已發送,但已設置cookie。

另一方面,通過瀏覽器在其初始頁面請求中發送的任何cookie,在頁面加載時設置$ _COOKIE超級全局變量。

因此,當您設置cookie並將其發送到瀏覽器並保存在客戶端時,瀏覽器發送到服務器的下一個請求也將發送此先前保存的cookie,這將設置$ _COOKIE超級全局。

如果要保存對cookie服務器端所做的更改,則可以創建一個存儲原始cookie的類,然后在通過該類的cookie更改方法對cookie進行更改時對其進行修改,然后使用同一類檢索任何cookie數據,也可以在使用PHP設置實際cookie的同時自行修改$ _COOKIE super global。

嘗試從文件index.php設置cookie。 這是您啟動網站時運行的第一個文件,因此cookie應當在您到達主頁時可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM