当前位置:首页 > 日记 > 正文

WordPress中限制非管理员用户在文章后只能评论一次

WordPress中限制非管理员用户在文章后只能评论一次

之前有网友提出,在WordPress中有没有办法实现每篇文章只允许用户评论一次?

暂不说这个需求有没有用,毕竟WordPress就是给有各种需求的人用的。这个功能实现起来也比较简单,只需每次用户发表的评论进数据库之前,从当前文章的所有评论中查找是否有相同的用户名或邮箱已经发表过评论,如果有就跳到错误页面即可。

实现代码,放到当前主题的functions.php中即可(这里还增加了对IP的判断,更保险):

// 获取评论用户的ip,参考wp-includes/comment.phpfunction 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();  // 不限制管理员发表评论 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('本站每篇文章只允许评论一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>'); }  return $commentdata;}add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);

这里没有限制管理员的评论次数,那我们顺带着看一下判断用户是否为管理员的方法:

判断指定id的用户是不是管理员

该需求实现起来非常简单,几行代码搞定,分享一下:

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; // 非管理员}

判断当前登录用户是不是管理员

如果是判断当前登录用户是不是管理员,可以使用下面的函数:

function ludou_is_administrator() { // wp_get_current_user函数仅限在主题的functions.php中使用 $currentUser = wp_get_current_user(); if(!empty($currentUser->roles) && in_array('administrator', $currentUser->roles))   return 1; // 是管理员 else  return 0; // 非管理员}

相关文章

Photoshop绘制可爱风格的漫画Q版美

Photoshop绘制可爱风格的漫画Q版美

教程,绘制,头像,风格,漫画,效果图:原图:主要过程:软件是sai,板绘,这些不用多说了,然后先根据照片,打出大概的草稿。第二步就是描出线稿啦,我描线稿用的是自己调的笔刷。线稿笔刷设置ps:右键笔刷点击设置会弹出这个,这里面的抖动修正和笔刷修正建议开5…

PHP判断手机是IOS还是Android

PHP判断手机是IOS还是Android

电脑软件,PHP,IOS,Android,本文介绍了PHP判断手机是IOS还是Android的三个小实例,要判断用户的手机是安卓的还是ios的,搜了一下相关的资料,最终获得的结果分享给大家。实例1:主要是要用到HTTP_USER_AGENT,它表示的意思是用来检查浏览页面的访问者…

PS超强合成一张非常逼真写实的赛车

PS超强合成一张非常逼真写实的赛车

赛车,修理店,逼真,海报,电脑软件,这篇教程教的朋友们使用PS来合成一张非常逼真写实的赛车修理店海报。教程合成难度中等偏上,推荐一下和的朋友们一起分享、一起学习了,我们先来看看最终的效果图吧!12 3 4 5 阅读全文1 23 4 5 阅读全文1 2 34…

wps演示全屏播放如何设置

wps演示全屏播放如何设置

全屏,方法,设置,演示,如何设置,  我们的日常工作生活已经处处充满了wps演示的痕迹,但是大家知道wps怎么设置全屏播放呢?下面小编就为你介绍wps 版ppt如何全屏播放的方法啦,不懂的朋友会请多多学习wps哦。wps演示设置全屏播放的方法打开一个…

FTP服务器关于权限的问题

FTP服务器关于权限的问题

权限,服务器,电脑软件,FTP,很多电影网站,论坛或其它机构为了方便会员或成员上传电影或者交流文件,都允许用户的上传权限,因为只有允许这个权限,用户才可以上传文件,但这个权限在允许断点再传的ftp服务器中,可以导致很大的问题出来。允许断点再传…

IE9 IE8 ajax跨域问题的快速解决方

IE9 IE8 ajax跨域问题的快速解决方

解决方法,跨域问题,快速,电脑软件,ajax,网上解决办法均是 在发起请求之前添加 jQuery.support.cors=true;但是,线下测试,是ok的,一放到服务器上,又出现了新的eroor:readyState: 0, status: 0, statusText: "Error: 拒绝访问...最后,问题是这样解…

excel2003保护工作表区域的教程

excel2003保护工作表区域的教程

教程,区域,工作,电脑软件,  Excel中工作表区域如何设置才会被保护呢?下面是小编带来的关于excel2003保护工作表区域的教程,希望阅读过后对你有所启发!excel2003保护工作表区域的教程:  保护工作表区域步骤1:打开Excel表格将选择框点到A8位…

PHP实现的简单适配器模式示例

PHP实现的简单适配器模式示例

适配器模式,示例,简单,电脑软件,PHP,本文实例讲述了PHP实现的简单适配器模式。分享给大家供大家参考,具体如下:<?php//适配器模式-通过适配器去执行第三方方法//定义目标接口interface Target{ public function simpleMethod1(); public fu…

win7自动弹出帮助支持

win7自动弹出帮助支持

支持,自动弹出,电脑软件,故障现象:电脑刚开机进入桌面就跳出&ldquo;windows帮助和支持&rdquo;窗口,不管打开什么程序都弹出&ldquo;windows帮助和支持&rdquo;,关闭后又出来,这是怎么回事?怎么解决?原因分析:电脑频繁跳出&ldquo;windows帮助和支持…

photoshop 透明玻璃质感长圆形按钮

photoshop 透明玻璃质感长圆形按钮

透明,质感,按钮,玻璃,电脑软件,最终效果图 1. 在Photoshop5.5(或者更高版本)中建立新文件120x80 大小, RGB模式Contents,设为Transparent( 透明 ),layer1填充为白色,上加一层,建立40x40 的圆形,放在页面中心填充色#003366,然后将其从中心分解开,左右…

Photoshop制作逐渐显示的创意钟表G

Photoshop制作逐渐显示的创意钟表G

动画,教程,显示,创意,效果图,Photoshop制作逐渐显示的创意钟表GIF动画效果图,教程中钟表的制作步骤比较简单,圆,圆角矩形,投影,分别设置几个图层样式就可以了。关键是怎么让钟表指针动起来,并且是逐渐显示的的效果,方法不难,我们往下看!效果图:主要过…

保护DNS服务器的几种方法

保护DNS服务器的几种方法

服务器,几种方法,电脑软件,DNS,DNS服务器是(Domain Name System或者Domain Name Service)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP地址。用户使用域名地址,该系统就会自动把域名地址转为IP地址。域名服务是运行域…