在设定的时间内,除了对当前文章生效,对其他文章同样生效,需过了设定时间才可继续评论
各种垃圾评论让我们防不胜防,但我们可以通过合理的设计各种限制,在一定情况下缓解。这一次分享的就是限制用户评论太快的代码。
在设定的时间内,除了对当前文章生效,对其他文章同样生效,需过了设定时间才可继续评论。
在主题根目录下的functions.php
文件中的<?php
下添加以下代码并保存。
//评论间隔
add_filter('comment_flood_filter', 'suren_comment_flood_filter', 10, 3);
function suren_comment_flood_filter($flood_control, $time_last, $time_new)
{
$seconds = 60;//间隔时间
if(($time_new - $time_last) < $seconds)
{
$time=$seconds-($time_new - $time_last);
wp_die ('评论过快!请'. $time.'秒后再次评论');
}
else
{
return false;
}
}
实战优化
- 在实战中,需要将函数内的信息抽离到外部,方便维护,
- 贴合实际体验,添加了返回按钮,避免用户误操作
add_filter('comment_flood_filter', array(__CLASS__, 'suren_comment_flood_filter'), 10, 3);
/**
* 效果:两次评论之间间隔
* 来源:https://www.npc.ink/19960.html
*/
public static function suren_comment_flood_filter($flood_control, $time_last, $time_new)
{
$interval_time = 5;
$seconds = $interval_time; //间隔时间
if (($time_new - $time_last) < $seconds) {
$time = $seconds - ($time_new - $time_last);
$message = '评论过快!请' . $time . '秒后再来评论';
$message .= '<br/><a href="#" onclick="history.back();">
<button class="button" style="margin: 1em 0;">返回</button>
</a>';
wp_die($message);
} else {
return false;
}
}