WordPress中限制非管理員用戶(hù)在文章后只能評(píng)論一次
之前有網(wǎng)友提出,在WordPress中有沒(méi)有辦法實(shí)現(xiàn)每篇文章只允許用戶(hù)評(píng)論一次?
暫不說(shuō)這個(gè)需求有沒(méi)有用,畢竟WordPress就是給有各種需求的人用的。這個(gè)功能實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單,只需每次用戶(hù)發(fā)表的評(píng)論進(jìn)數(shù)據(jù)庫(kù)之前,從當(dāng)前文章的所有評(píng)論中查找是否有相同的用戶(hù)名或郵箱已經(jīng)發(fā)表過(guò)評(píng)論,如果有就跳到錯(cuò)誤頁(yè)面即可。
實(shí)現(xiàn)代碼,放到當(dāng)前主題的functions.php中即可(這里還增加了對(duì)IP的判斷,更保險(xiǎn)):
// 獲取評(píng)論用戶(hù)的ip,參考wp-includes/comment.php function ludou_getIP() { $ip = $_SERVER['REMOTE_ADDR']; $ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip ); return $ip; } function ludou_only_one_comment( $commentdata ) { global $wpdb; $currentUser = wp_get_current_user(); // 不限制管理員發(fā)表評(píng)論 if(empty($currentUser->roles) || !in_array('administrator', $currentUser->roles)) { $bool = $wpdb->get_var("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = ".$commentdata['comment_post_ID']." AND (comment_author = '".$commentdata['comment_author']."' OR comment_author_email = '".$commentdata['comment_author_email']."' OR comment_author_IP = '".ludou_getIP()."') LIMIT 0, 1;"); if($bool) wp_die('本站每篇文章只允許評(píng)論一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">點(diǎn)此返回</a>'); } return $commentdata; } add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);
這里沒(méi)有限制管理員的評(píng)論次數(shù),那我們順帶著看一下判斷用戶(hù)是否為管理員的方法:
判斷指定id的用戶(hù)是不是管理員
該需求實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,幾行代碼搞定,分享一下:
function ludou_is_administrator($user_id) { $user = get_userdata($user_id); if(!empty($user->roles) && in_array('administrator', $user->roles)) return 1; // 是管理員 else return 0; // 非管理員 }
判斷當(dāng)前登錄用戶(hù)是不是管理員
如果是判斷當(dāng)前登錄用戶(hù)是不是管理員,可以使用下面的函數(shù):
function ludou_is_administrator() { // wp_get_current_user函數(shù)僅限在主題的functions.php中使用 $currentUser = wp_get_current_user(); if(!empty($currentUser->roles) && in_array('administrator', $currentUser->roles)) return 1; // 是管理員 else return 0; // 非管理員 }
- 使用jQuery實(shí)現(xiàn)WordPress中的Ctrl+Enter和@評(píng)論回復(fù)
- 利用AJAX實(shí)現(xiàn)WordPress中的文章列表及評(píng)論的分頁(yè)功能
- WordPress中利用AJAX異步獲取評(píng)論用戶(hù)頭像的方法
- 講解WordPress中用于獲取評(píng)論模板和搜索表單的PHP函數(shù)
- 利用jQuery實(shí)現(xiàn)WordPress中@的ID懸浮顯示評(píng)論內(nèi)容
- 修改PHP腳本使WordPress攔截垃圾評(píng)論的方法示例
- 在WordPress中實(shí)現(xiàn)評(píng)論頭像的自定義默認(rèn)和延遲加載
- WordPress中對(duì)訪客評(píng)論功能的一些優(yōu)化方法
- WordPress過(guò)濾垃圾評(píng)論的幾種主要方法小結(jié)
相關(guān)文章
PHP-Fcgi下PHP的執(zhí)行時(shí)間設(shè)置方法
昨天,一個(gè)程序需要導(dǎo)出500條數(shù)據(jù),結(jié)果發(fā)現(xiàn)到150條是,Nginx報(bào)出504 Gateway Timeout錯(cuò)誤,原來(lái)PHP-Fcgi下的設(shè)置執(zhí)行時(shí)間與isapi的不同2013-08-08php調(diào)整gif動(dòng)畫(huà)圖片尺寸示例代碼分享
這篇文章主要介紹了如何使用php調(diào)整gif動(dòng)畫(huà)圖片尺寸,大家可以參考使用2013-12-12php抽象類(lèi)和接口知識(shí)點(diǎn)整理總結(jié)
這篇文章主要介紹了php抽象類(lèi)和接口知識(shí)點(diǎn),整理總結(jié)了php抽象類(lèi)與接口的概念、原理、操作技巧及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2019-08-08PHP+RabbitMQ實(shí)現(xiàn)消息隊(duì)列的完整代碼
這篇文章主要給大家介紹了關(guān)于利用PHP+RabbitMQ實(shí)現(xiàn)消息隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03PHP模擬登陸163郵箱發(fā)郵件及獲取通訊錄列表的方法
這篇文章主要介紹了PHP模擬登陸163郵箱發(fā)郵件及獲取通訊錄列表的方法,實(shí)例分析了php實(shí)用curl模擬登陸163郵箱的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03php編寫(xiě)批量生成不重復(fù)的卡號(hào)密碼代碼
本文給大家分享的是一個(gè)十分實(shí)用的代碼,項(xiàng)目中經(jīng)常需要用到,可以批量生成不重復(fù)的卡號(hào)密碼的2種方法,有需要的小伙伴參考下吧。2015-05-05使用PHP獲取當(dāng)前url路徑的函數(shù)以及服務(wù)器變量
本篇文章是對(duì)使用PHP獲取當(dāng)前url路徑的函數(shù)以及服務(wù)器變量的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06