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

COOKIE記錄
SESSION記錄
數(shù)據(jù)庫記錄
緩存文件記錄
從技術(shù)難度上,第1、2種方法最簡單,因此,下文將實(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è)簡單的運(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>';
}
這種方法最直接有效,而且理解起來非常容易。
相關(guān)文章
CyberPanel安裝WordPress并配置偽靜態(tài)規(guī)則
下面教你如何在 CyberPanel安裝WordPress以及配置偽靜態(tài),需要的朋友可以參考下2023-12-27- 這篇文章主要介紹了wordpress無法安裝更新主題插件的解決辦法,需要的朋友可以參考下2020-12-27
WordPress必備數(shù)據(jù)庫SQL查詢語句整理
發(fā)現(xiàn)幾條比較實(shí)用的,適合 WordPress 實(shí)用的SQL語句。于是就趕緊收集分享出來了,需要的朋友可以參考下2017-09-23wordpress在安裝使用中出現(xiàn)404、403、500及502問題的分析與解決方法
wordpress是很多新手站長搭建個(gè)人博客最喜愛的程序,但是最近在使用WordPress的時(shí)候遇到了一些問題,所以想著將遇到問題總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于wo2017-08-11WordPress取消英文標(biāo)點(diǎn)符號(hào)自動(dòng)替換中文標(biāo)點(diǎn)符號(hào)的優(yōu)雅方法
這篇文章主要介紹了WordPress取消英文標(biāo)點(diǎn)符號(hào)自動(dòng)替換中文標(biāo)點(diǎn)符號(hào)的優(yōu)雅方法,需要的朋友可以參考下2017-04-04- 這篇文章主要給大家介紹了wordpress自定義上傳文件類型的方法,如WordPress默認(rèn)允許上傳 .exe 后綴名的可運(yùn)行文件,那么我們?cè)趺唇褂脩粼赪ordPress后臺(tái)發(fā)表文章時(shí)上傳 .e2016-12-19
- 大家可能發(fā)現(xiàn)了當(dāng)實(shí)現(xiàn)了前端用戶中心,后臺(tái)控制面板就失去了作用,那么限制其他用戶進(jìn)入后臺(tái)控制面板就很有必要了!那么我們要怎么做呢?通過下面這篇文章分享的方法后,只2016-12-19
WordPress實(shí)現(xiàn)回復(fù)文章評(píng)論后發(fā)送郵件通知的功能
這篇文章主要介紹了WordPress實(shí)現(xiàn)回復(fù)文章評(píng)論后發(fā)送郵件通知的功能,涉及wordpress針對(duì)評(píng)論與郵件的相關(guān)操作技巧,需要的朋友可以參考下2016-10-11WordPress使用自定義文章類型實(shí)現(xiàn)任意模板的方法
這篇文章主要介紹了WordPress使用自定義文章類型實(shí)現(xiàn)任意模板的方法,可通過自定義文章類型來實(shí)現(xiàn)任意模版的使用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-10-11WordPress后臺(tái)地址被改導(dǎo)致無法登陸后臺(tái)的簡單解決方法
這篇文章主要介紹了WordPress后臺(tái)地址被改導(dǎo)致無法登陸后臺(tái)的簡單解決方法,簡單分析了后臺(tái)無法登陸的原因與相應(yīng)的解決方法,涉及針對(duì)wordpress配置項(xiàng)的簡單修改,需要的朋友2016-10-11