wordpress實(shí)現(xiàn)用戶歷史閱讀記錄功能分享
COOKIE記錄
SESSION記錄
數(shù)據(jù)庫記錄
緩存文件記錄
從技術(shù)難度上,第1、2種方法最簡(jiǎn)單,因此,下文將實(shí)現(xiàn)以COOKIE為記錄方法的實(shí)現(xiàn)代碼。其中第1、2、4種方法思路基本相同,即通過在用戶訪問某個(gè)頁面時(shí),通過對(duì)某個(gè)特定名稱的COOKIE或SESSION或緩存文件中增加值,把當(dāng)前URL或唯一標(biāo)識(shí)碼記錄其中,而在使用時(shí),只需要調(diào)用該名稱的COOKIE或SESSION或緩存文件中的值,并把對(duì)應(yīng)的項(xiàng)目鏈接列出即可。
而數(shù)據(jù)庫記錄方法一般需要用戶先注冊(cè),注冊(cè)之后記錄過程同上,在訪問頁面時(shí),將這個(gè)URL或頁面對(duì)應(yīng)的唯一標(biāo)識(shí)碼存入用戶ID對(duì)應(yīng)的某個(gè)數(shù)據(jù)庫字段或表中,在使用時(shí),通過數(shù)據(jù)庫查詢把這些值調(diào)用出來即可。這種方法不同于前一種,存入數(shù)據(jù)庫的記錄是永久不會(huì)丟失的,不會(huì)由于COOKIE或緩存過期而丟失,也可以實(shí)現(xiàn)跨終端,即在不同的電腦上也可以調(diào)用。
在wordpress中,我們通過一些鉤子來實(shí)現(xiàn)訪問文章時(shí)把該文章的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);
}
}
在記錄的時(shí)候,我們需要對(duì)已經(jīng)被記錄的文章ID做一個(gè)簡(jiǎn)單的運(yùn)算,保證COOKIE中只有一個(gè)ID,不重復(fù)。并按照我們?cè)L問的時(shí)間來對(duì)這些文章ID排序(最后訪問的排在最前)。
在使用的時(shí)候,我們使用下面的代碼,直接調(diào)用這些被記錄的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>';
}
這種方法最直接有效,而且理解起來非常容易。
上一篇:WordPress中讓W(xué)idget 標(biāo)題支持簡(jiǎn)單的HTML標(biāo)簽
欄 目:WordPress
下一篇:wordpress評(píng)論者鏈接在新窗口中打開的方法
本文標(biāo)題:wordpress實(shí)現(xiàn)用戶歷史閱讀記錄功能分享
本文地址:http://mengdiqiu.com.cn/a1/WordPress/12791.html
您可能感興趣的文章
- 05-31wordpress修改后臺(tái)登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11修改wordpress上傳臨時(shí)目錄解決wordpress無法安裝插件包的方法
- 01-11WordPress增加文章排序方式
- 01-11自己做wordpress評(píng)論插件修改評(píng)論樣式(兩步美化評(píng)論內(nèi)容)
- 01-11wordpress get
- 01-11wordpress獲取文章評(píng)論數(shù)過濾掉作者代碼分享
- 01-11在wordpress文章末尾添加內(nèi)容的簡(jiǎn)單方法
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計(jì)功能代碼修改(原理分析)
- 01-11wordpress dynamic


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 05-31wordpress修改后臺(tái)登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11WordPress增加文章排序方式
- 01-11修改wordpress上傳臨時(shí)目錄解決wordpre
- 01-11wordpress get
- 01-11自己做wordpress評(píng)論插件修改評(píng)論樣式
- 01-11在wordpress文章末尾添加內(nèi)容的簡(jiǎn)單方
- 01-11wordpress獲取文章評(píng)論數(shù)過濾掉作者代
- 01-11wordpress dynamic
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計(jì)功
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改