Php 如何在user meta中保存ID列表?

Php 如何在user meta中保存ID列表?,php,wordpress,Php,Wordpress,我试图在用户meta中保存一个小的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();

我试图在用户meta中保存一个小的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; 

实际上

$visited[] = $id 
这是正确的

问题是您正在使用_ID函数,该函数打印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,这些代码做了完全相同的事情,但我完全没有注意到$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));
    }
}