我想在WordPress网站的会话或cookie中添加一些值。我试图在AJAX中这样做。但它不起作用。通常我的会话或cookie变量不工作/创建。我找到了一些教程并尝试了,但仍然没有改进。
http://stackoverflow.com/questions/6183162/how-can-i-set-get-and-destroy-cookies-in-wordpress
http://blog.ginchen.de/en/2008/08/15/session-variablen-in-wordpress/
http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/
http://www.thinkingoutloud.co.za/content/20091012/php_wordpress_and_session
当我使用htaccess注册register_globals并且如果我创建php.ini文件时,我得到500内部错误。
感谢您阅读此内容..
我在functions.php中的代码
function register_session(){
if( !session_id() )
session_start();
}
add_action('init','register_session',1);
function enquiry_ajax_request() {
if ( isset($_REQUEST) ) {
if(isset($_REQUEST['product'])){
$_SESSION['product'] = "Some data I need later";
setcookie('my_cookie', 'some default value', strtotime('+1 day'));
}
}
}
add_action( 'wp_ajax_enquiry_ajax_request', 'enquiry_ajax_request' );
add_action( 'wp_ajax_nopriv_enquiry_ajax_request', 'enquiry_ajax_request' );
jquery的
jQuery(document).ready(function($) {
$( "#add-enquiry" ).click(function() {
$.ajax({
url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
data: {
'action':'enquiry_ajax_request',
'product' : '<?php echo get_the_ID(); ?>'
},
success:function(data) {
console.log(data);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});
});
这是该网站 http://davidrossfurniture.com/the-collection/product-one/another-chair/
当您单击“添加到查询”按钮时,其调用带有产品ID的ajax,必须在会话或cookie中添加。这就是我必须做的事情。
ajax链接: http://davidrossfurniture.com/wp-admin/admin-ajax.php?action=enquiry_ajax_request&product=524
答案 0 :(得分:1)
现在AJAX返回会话ID。尝试调试PHP部分,将一些实际数据返回给客户端并将其转储到浏览器控制台
function enquiry_ajax_request() {
// No need to check $_REQUEST itself - it is always set
if(isset($_REQUEST['product'])){
$_SESSION['product'] = "Some data I need later";
setcookie('my_cookie', 'some default value', strtotime('+1 day'));
}
$data = array(
'request'=>$_REQUEST,
'session'=>$_SESSION,
'cookie'=>$_COOKIE,
);
echo json_encode($data);
}
<强> UPD:强>
可能问题出在 cookie路径中。它似乎在/wp-admin/
之外无法访问。尝试将其设置为/
,如下所示:
setcookie('my_cookie', 'some default value', strtotime('+1 day'), '/');