我遇到了一个问题,如果有人能帮我解决这个问题我很感激。
基本上,我正在制作一个代码,允许用户将帖子添加到收藏夹,并将收藏夹保存在cookie中以便记住它,但它失败了。这是我的代码:
首先,我使用此代码运行一个函数,检查用户是否保存了帖子:
<?php dt_fav_action(); ?>
这是我的dt_fav_action函数:
function dt_fav_action() {
global $post;
$cookie = $_COOKIE['fav-'.$post->ID];
if ($cookie == 1) {
$user_faved = true;
}
if ($user_faved == true) {
echo '<a href="';dt_favorites_link();echo '" class="faved">';dt_count_fav();echo '</a>';
} else {
echo '<a href="" class="addfav">';dt_count_fav();echo '</a>';
}
}
这是$ .ajax请求,它将数据发送到我的php文件以处理收藏夹并存储cookie等。
$('.addfav').click(function(event){
$(this).unbind('click');
var parentfav = $(this).parent();
var postid = $(this).parent().parent().parent().attr('id').replace(/[^0-9]/g, '');
$(this).fadeOut();
$.ajax({
url: '<?php bloginfo('template_directory'); ?>/ajax/favorite.php',
type: 'get',
data: { postid : postid },
dataType: 'json',
success: function(data){
parentfav.html('<a href="<?php dt_favorites_link(); ?>" class="faved">' + data.msg + '</a>');
parentfav.children('.faved').css({'background-position' : 'left bottom', 'color' : '#1871a4'});
}
});
return false;
});
最后这是我更新收藏夹计数的favorite.php,并添加cookie以便稍后通过dt_fav_action函数检索它,但这是真正的问题,$ _COOKIE总是返回null,它不会被保存。< / p>
<?php
// include WordPress
require('../../../../wp-blog-header.php');
$data = array();
// update post favorites count
$postid = $_GET['postid'];
update_post_meta($postid, 'faves', (int)get_post_meta($postid, 'faves', true)+1);
$updated = get_post_meta($postid, 'faves', true);
setcookie('fav-'.$postid, '1', time() + (20 * 365 * 24 * 60 * 60));
$data['msg'] = $updated;
echo json_encode($data);
?>
setcookie part,我在通过$ .ajax调用时设置了cookie,并且脚本在此之后无法识别任何cookie,因此它始终失败并且永远不会记住保存状态。
请帮助..我提前感谢
答案 0 :(得分:1)
将cookie设置为在根目录的所有子目录上可用。
setcookie(
'fav-'.$postid,
'1',
time() + (20 * 365 * 24 * 60 * 60),
"/"
);