我正试图在用户元中保存一个相当于id小列表的内容,但由于某种原因,我只能保存最近的访问。我的做法明显有问题吗?
function check_visit() {
$user = get_current_user_id();
$post_visits = get_user_meta($user, 'post_visits', true);
$visited = explode(",",$post_visits);
$id = (string)the_ID();
if($id && !in_array($id, $visited)) {
$visited[] = $id;
update_user_meta($user, 'post_visits', implode(",", $visited));
}
print_r(implode(",",$visited));
}
实际
$visited[] = $id
是正确的!
问题是您使用的是the_ID()
函数,该函数打印ID,不返回任何值。
正确的函数应该是get_The_ID()
你的代码应该是这样的:
function aw_check_visit(){
$user = get_current_user_id();
$post_visits = get_user_meta($user, 'post_visits', true);
$visited = explode(",",$post_visits);
$id = (string)get_the_ID();
if($id && !in_array($id, $visited)) {
$visited[] = $id;
update_user_meta($user, 'post_visits', implode(",", $visited));
}
}
您需要使用array_push,而不是像现在这样将其添加到数组中。
更改此
$visited[] = $id;
至
array_push($visited, $id);