最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

wordpress實(shí)現(xiàn)用戶(hù)歷史閱讀記錄功能分享

  發(fā)布時(shí)間:2014-02-26 15:04:12   作者:佚名   我要評(píng)論
歷史記錄是一種較為私密的功能,主要為當(dāng)前用戶(hù)提供服務(wù),不同的用戶(hù)使用不同的終端看到的結(jié)果是不同的,不同用戶(hù)之間不能共享,以保持用戶(hù)對(duì)自己瀏覽記錄的獨(dú)享性。一般而言,我們有以下幾種實(shí)現(xiàn)思路

COOKIE記錄
SESSION記錄
數(shù)據(jù)庫(kù)記錄
緩存文件記錄
從技術(shù)難度上,第1、2種方法最簡(jiǎn)單,因此,下文將實(shí)現(xiàn)以COOKIE為記錄方法的實(shí)現(xiàn)代碼。其中第1、2、4種方法思路基本相同,即通過(guò)在用戶(hù)訪問(wèn)某個(gè)頁(yè)面時(shí),通過(guò)對(duì)某個(gè)特定名稱(chēng)的COOKIE或SESSION或緩存文件中增加值,把當(dāng)前URL或唯一標(biāo)識(shí)碼記錄其中,而在使用時(shí),只需要調(diào)用該名稱(chēng)的COOKIE或SESSION或緩存文件中的值,并把對(duì)應(yīng)的項(xiàng)目鏈接列出即可。

而數(shù)據(jù)庫(kù)記錄方法一般需要用戶(hù)先注冊(cè),注冊(cè)之后記錄過(guò)程同上,在訪問(wèn)頁(yè)面時(shí),將這個(gè)URL或頁(yè)面對(duì)應(yīng)的唯一標(biāo)識(shí)碼存入用戶(hù)ID對(duì)應(yīng)的某個(gè)數(shù)據(jù)庫(kù)字段或表中,在使用時(shí),通過(guò)數(shù)據(jù)庫(kù)查詢(xún)把這些值調(diào)用出來(lái)即可。這種方法不同于前一種,存入數(shù)據(jù)庫(kù)的記錄是永久不會(huì)丟失的,不會(huì)由于COOKIE或緩存過(guò)期而丟失,也可以實(shí)現(xiàn)跨終端,即在不同的電腦上也可以調(diào)用。

在wordpress中,我們通過(guò)一些鉤子來(lái)實(shí)現(xiàn)訪問(wèn)文章時(shí)把該文章的ID記錄下來(lái)。


復(fù)制代碼
代碼如下:

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);
}
}

在記錄的時(shí)候,我們需要對(duì)已經(jīng)被記錄的文章ID做一個(gè)簡(jiǎn)單的運(yùn)算,保證COOKIE中只有一個(gè)ID,不重復(fù)。并按照我們?cè)L問(wèn)的時(shí)間來(lái)對(duì)這些文章ID排序(最后訪問(wèn)的排在最前)。

在使用的時(shí)候,我們使用下面的代碼,直接調(diào)用這些被記錄的ID即可。


復(fù)制代碼
代碼如下:

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>';
}

這種方法最直接有效,而且理解起來(lái)非常容易。

相關(guān)文章

最新評(píng)論

得荣县| 二手房| 新宾| 射阳县| 即墨市| 河曲县| 沙坪坝区| 闽侯县| 东方市| 铜川市| 唐海县| 交口县| 漯河市| 长泰县| 荆州市| 当阳市| 赞皇县| 庆城县| 桐梓县| 那坡县| 宁化县| 望奎县| 丰台区| 皋兰县| 县级市| 公安县| 北京市| 广德县| 微博| 横峰县| 珲春市| 澎湖县| 奉节县| 托克逊县| 叙永县| 永靖县| 寿宁县| 马关县| 光泽县| 金溪县| 阿克苏市|