WordPress中實(shí)現(xiàn)每篇文章只允許用戶評論一次功能其實(shí)用到不多了,這樣可以防止用戶加水了,下面一起來看看具體的操作步驟,代碼為二次開發(fā)希望對各位有所幫助.
之前有網(wǎng)友提出,在WordPress中有沒有辦法實(shí)現(xiàn)每篇文章只允許用戶評論一次?
暫不說這個需求有沒有用,畢竟WordPress就是給有各種需求的人用的。這個功能實(shí)現(xiàn)起來也比較簡單,只需每次用戶發(fā)表的評論進(jìn)數(shù)據(jù)庫之前,從當(dāng)前文章的所有評論中查找是否有相同的用戶名或郵箱已經(jīng)發(fā)表過評論,如果有就跳到錯誤頁面即可。
實(shí)現(xiàn)代碼,放到當(dāng)前主題的functions.php中即可,這里還增加了對IP的判斷,更保險,代碼如下:
- // 獲取評論用戶的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ā)表評論
- if(emptyempty($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('本站每篇文章只允許評論一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">點(diǎn)此返回</a>');
- } //Vevb.com
- return $commentdata;
- }
- add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);
新聞熱點(diǎn)
疑難解答
圖片精選