Wordpress Cookies via functions.php不';在重新加载页面之前,是否不读取cookie?

Wordpress Cookies via functions.php不';在重新加载页面之前,是否不读取cookie?,php,wordpress,Php,Wordpress,我正在使用wordpress,并在functions.php中创建了一个cookie 我的问题是,创建此cookie时,模板/页面不会读取它,而是在其第二页加载时读取 是否有解决方法,以便在创建cookie时读取cookie 以下是我在functions.php的当前代码: <?php function my_cookie() { $myvalue = 'hello'; if (!isset($_COOKIE['myCookie'])) { setcookie("myCookie",

我正在使用wordpress,并在functions.php中创建了一个cookie

我的问题是,创建此cookie时,模板/页面不会读取它,而是在其第二页加载时读取

是否有解决方法,以便在创建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');
?>


尝试从index.php文件中设置cookie。这是您启动站点时运行的第一个文件,因此当您进入主页时,cookie应该是可用的。

这是设计的。当使用PHP创建cookie时,它不会设置$\u cookie中的超级全局值。cookie标头已发送,但cookie已设置

另一方面,浏览器在初始页面请求中发送的任何COOKIE都会在页面加载时设置$\u COOKIE super global

因此,当您设置cookie并将其发送到浏览器并保存在客户端时,浏览器发送到服务器的下一个请求也将随此先前保存的cookie一起发送,这将设置$\u cookie超级全局


如果要保存对cookie服务器端所做的更改,可以创建一个存储原始cookie的类,然后在通过该类的cookie更改方法对cookie进行更改时对其进行修改,然后使用同一个类检索任何cookie数据,或者,您可以在使用PHP设置实际COOKIE的同时自己修改$\u COOKIE super global。

我喜欢将搜索条件保存到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;
        }
    }
}
然后,您可以通过iMedia访问:

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

设置时,尝试将相同的数据直接传递给
$\u COOKIE
。这样,您就可以通过
$\u COOKIE
访问它,而无需重新加载页面,然后在后续加载时,不管怎样,它都会在那里。请看上面的代码……这就是我尝试过但无法调用的内容,是从我的主页返回的。你能详细说明一下吗?Wordpress只允许我在Functions.php中设置cookie,所以据我所知,我不能这样做。它是开源的,你可以用它做你想做的事,如果您收到一个错误,那么您的代码肯定有错误。(不要使用wordpress函数,自己创建)我的意思是wordpress不会在functions.php之外创建cookie。。。我已经试过了,但它不起作用。那是因为你正在使用wordpress函数来创建它,创建你自己的。