Wordpress中的PHP cookie在登录时返回null值

时间:2016-09-08 18:50:04

标签: php ajax wordpress cookies

您好我有一个按钮点击事件,它使用admin-ajax.php调用我的function.php中的函数我设置了一个cookie并尝试将id附加到现有的cookie值(ID列表)。

我在插件之外使用admin-ajax.php非常类似于本文https://premium.wpmudev.org/blog/using-ajax-with-wordpress/

但是当我以管理员身份登录时,$_COOKIE[$name]始终会返回Null。但是,当我退出并作为访问者返回时,一切正常。我希望此功能适用于所有用户,无论他们是否登录。有人能帮我弄清楚我做错了吗?

我的Javascript中

$.ajax({
        url : myObj.ajax_url,
        type : 'post',
        data : {
            action : 'store_this_id',
            post_id : post_id
        },
        success : function( response ) {
            console.log(response);
        }
    });

in fuctions.php:

add_action( 'wp_ajax_nopriv_store_this_id', 'store_this_id' );
add_action( 'wp_ajax_store_this_id', 'store_this_id' );

function store_this_id() {
    $name = "mycookie";
    $expire = time() + (60*60*24); // expire in 24 hours
    $value = isset( $_COOKIE[$name] ) ? $_COOKIE[$name] : "test";
    $value .= "," . $_POST['post_id'];

    if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
        setcookie($name, $value, $expire, '/');
        $_COOKIE[$name] = $value;

        print_r($value);
        echo "\n";
        print_r($_COOKIE[$name]);
    }
    die();
}

控制台输出[已注销]运行两项测试:

XHR finished loading: POST "http://mywebsite.dev/wp-admin/admin-ajax.php"
    test,1741
    test,1741
XHR finished loading: POST "http://mywebsite.dev/wp-admin/admin-ajax.php"
    test,1741,1760
    test,1741,1760

控制台输出[以管理员身份登录]运行相同的两项测试:

XHR finished loading: POST "http://mywebsite.dev/wp-admin/admin-ajax.php"
    null,1741
    null,1741
XHR finished loading: POST "http://mywebsite.dev/wp-admin/admin-ajax.php"
    null,1760
    null,1760

0 个答案:

没有答案