您好我有一个按钮点击事件,它使用admin-ajax.php调用我的function.php中的函数我设置了一个cookie并尝试将id附加到现有的cookie值(ID列表)。
我在插件之外使用admin-ajax.php非常类似于本文https://premium.wpmudev.org/blog/using-ajax-with-wordpress/
但是当我以管理员身份登录时,$_COOKIE[$name]
始终会返回Null
。但是,当我退出并作为访问者返回时,一切正常。我希望此功能适用于所有用户,无论他们是否登录。有人能帮我弄清楚我做错了吗?
:
$.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