How to mark posts as visited

时间:2017-03-07 作者:abdelhak.ajbouni

我需要一个函数来告诉我当前用户是否访问过特定的帖子(或自定义帖子类型)。非常感谢。

1 个回复
SO网友:Benoti

当登录用户访问任何页面时,可以添加特殊的自定义字段。

在不编辑模板文件的情况下执行此操作的一种方法是使用过滤器the_content

add_filter(\'the_content\', \'wpse_259159\');

function wpse_259159($content){

    // check the user ID
    $current_user = wp_get_current_user();
    if ( 0 == $current_user->ID ) {
      // Not logged in.
    } else {
    // Logged in so we want to know if the custom field exists
    global $post;
    $visit_meta = get_post_meta($post->ID, \'users_visit_\'.$current_user->ID.\'_\'.$post_ID, true);

        if($visit_meta){
            // the custom field exist
            update_post_meta($post->ID, \'users_visit_\'.$current_user->ID.\'_\'.$post_ID, $visit_meta+1);
        }else{
            update_post_meta($post->ID, \'users_visit_\'.$current_user->ID.\'_\'.$post_ID, \'1\'); 
        }

    }
    return $content; 
}
通过这种方式,我不会在内容中返回任何值或字符串,我会根据您的需要(用户数和帖子数)为每个登录的用户编写一个自定义字段。这可能对数据库权重非常不利,因此您可以创建一个包含所有访问页面的用户的数组。如果需要,可以调整此选项以检索模板中的值。

希望有帮助。