乌徒帮技术范WordPressWordPress开发 › WordPress实现用户历史阅读记录功能

WordPress实现用户历史阅读记录功能

分类:WordPress开发

很多电商网站都会通过历史浏览记录告诉用户曾经浏览过哪些商品,而在一些内容型网站也提供这种功能,让读者感到站长对自己阅读的重视,以提高用户的回头率。有朋友在微博问我,乌徒帮右侧的“您曾经阅读过”的功能是怎么实现的,本文就来探讨这个功能的实现。

历史阅读记录实现思路

一般而言,历史记录是一种较为私密的功能,主要为当前用户提供服务,不同的用户使用不同的终端看到的结果是不同的,不同用户之间不能共享,以保持用户对自己浏览记录的独享性。一般而言,我们有以下几种实现思路:

  1. COOKIE记录
  2. SESSION记录
  3. 数据库记录
  4. 缓存文件记录

从技术难度上,第1、2种方法最简单,因此,下文将实现以COOKIE为记录方法的实现代码。其中第1、2、4种方法思路基本相同,即通过在用户访问某个页面时,通过对某个特定名称的COOKIE或SESSION或缓存文件中增加值,把当前URL或唯一标识码记录其中,而在使用时,只需要调用该名称的COOKIE或SESSION或缓存文件中的值,并把对应的项目链接列出即可。

而数据库记录方法一般需要用户先注册,注册之后记录过程同上,在访问页面时,将这个URL或页面对应的唯一标识码存入用户ID对应的某个数据库字段或表中,在使用时,通过数据库查询把这些值调用出来即可。这种方法不同于前一种,存入数据库的记录是永久不会丢失的,不会由于COOKIE或缓存过期而丢失,也可以实现跨终端,即在不同的电脑上也可以调用。

在WordPress中实现历史浏览记录

在wordpress中,我们通过一些钩子来实现访问文章时把该文章的ID记录下来。

add_action('wp','HistoryReadCookieInit',10);
function HistoryReadCookieInit(){
?? ?if(is_single()){
?? ??? ?global $post;
?? ??? ?if(isset($_COOKIE['history-read-posts']) && !empty($_COOKIE['history-read-posts']))$history_read_posts = trim($_COOKIE['history-read-posts']);
?? ??? ?else $history_read_posts = '';
?? ??? ?$post_id = $post->ID;
?? ??? ?if(strpos($history_read_posts,$post_id.',') === 0){
?? ??? ??? ?$history_read_posts = str_replace($post_id.',','',$history_read_posts);
?? ??? ?}elseif(strpos($history_read_posts,$post_id.',') > 0){
?? ??? ??? ?$history_read_posts = str_replace(','.$post_id.',',',',$history_read_posts);
?? ??? ?}
?? ??? ?$history_read_posts = $post_id.','.$history_read_posts;
?? ??? ?setcookie('history-read-posts',$history_read_posts,time()+315360000,COOKIEPATH,COOKIE_DOMAIN,false);
?? ?}
}

在记录的时候,我们需要对已经被记录的文章ID做一个简单的运算,保证COOKIE中只有一个ID,不重复。并按照我们访问的时间来对这些文章ID排序(最后访问的排在最前)。

在使用的时候,我们使用下面的代码,直接调用这些被记录的ID即可。

if(!isset($_COOKIE['history-read-posts']) || empty($_COOKIE['history-read-posts']))return;
$history_read_posts = trim($_COOKIE['history-read-posts']);
$history_read_posts = array_unique(array_filter(explode(',',$history_read_posts,$count)));
foreach($history_read_posts as $key => $p){
?? ?$get_post = get_post($p);
?? ?echo '<li><a href="'.get_permalink($p).'" title="'.get_the_title($p).'" target="_blank">'.get_the_title($p).'</a></li>';
}

这是一种最为低级的操作方法,但却直接有效,而且理解起来非常容易。

历史浏览记录的更多思考

基于同一种思路,我们可以在历史浏览记录的基础上,对该功能做更多的思考。我们试图把基于此的扩展功能作为一种提高用户粘度和用户体验的重要手段,甚至可以作为一种项目的基础。

1、浏览记录之间的共享

我们其实常在一些网站,特别是电商网站看到这种使用了,最典型的案例就是:当前热门。通过对当前在线用户的浏览记录的统计,获得当前被浏览最多的文章列表,从而列出一个当前热门文章列表。看上去似乎没有太大的意义,但如果很多人在浏览文章,那么用户参与讨论的可能就会增加,而如果这种讨论的即时性更强,如你一评论就马上得到了别人的回复,那么这就在某种程度上获得了用户参与互动的成功。

当然,共享的更多发挥还是无限可能的,例如你可以为你的网站增加在线收藏功能,而通过把所有用户的浏览记录数据进行计算后,可以为你的读者提供很好的推荐。

2、精准推荐

在淘宝或其他电商网站上,我们常常看到系统自动为你推荐:买了该商品的用户还买了。。。这样的功能,而这种功能也可以通过历史浏览记录来实现,即:阅读了该内容的用户还阅读了。。。这其实和上一节提到的为读者提供更好的推荐阅读没有太大的进步。

不过当大数据时代到来时,这个观念可能会继续改变,因为用户的行为数据将直接反映该用户的类型和可能的行为(行为预测)。例如一个用户通过你的站内的各种链接,阅读了和母婴产品相关的文章,这往往说明该用户可能怀孕或正在接受这方面的学习,这时,不妨为她推荐一些得到大家认可的好文章,在她阅读了这些好文章之后,再向她推荐一些产品,以此实现营收。

小结

历史浏览记录功能的实现思路其实很简单,关键在于对一些简单数据的合理处理,在wordpress中实现该功能也不难,读者朋友可以根据本文提供的代码,制作自己的历史浏览记录功能,如本站实现的一个边侧栏小挂件一样,也是通过这些代码来实现的。在实现了这些功能的基础上,其实我们还可以对该功能做进一步的开发,甚至实现创收。

填写个人信息,赶快回复吧!