限制用户每分钟可以发布的帖子数量?

时间:2013-10-24 作者:user1114968

因此,我找到了一个解决方案,可以限制用户每天可以发布的帖子数量,但不是每分钟。

下面是我在上找到的代码的摘录http://wordpress.org/support/topic/limit-the-number-of-posts-a-user-can-make?replies=18

    //limit the quantity to N posts
    $N = 20; max 20 posts por usuario
    $count_posts = count(get_posts(array(\'author\'=>$user_ID)));// returns the quantity of written posts by current user to $user_ID
    if ($count_posts >= N){
    Header("Location: index.php");//redirects to dashboard, where it should point the user that he cannot create a new post
    }
    //end of modification
如何修改$count\\u posts var以计算时间?我想让用户每2分钟只能提交一篇帖子。如果他们在服务器上提交帖子,他们必须再等待2分钟才能提交另一篇帖子。

1 个回复
SO网友:Ryan Bayne

我将首先确定最友好的方法来解决这一问题。我认为点击发布后/更新按钮后会发出警告。如果用户在上一篇帖子发布后2分钟内再次访问,则可以阻止编辑帖子屏幕加载。但我认为这并不实际,我也不明白为什么需要重定向。不允许发布完成,但允许用户创建草稿,怎么样?

在发布过程中进行检查,除非您受到前面提到的攻击,否则很少有用户会看到任何类型的警告。。。

add_action( "publish_post", \'limit_post_frequency\' );

function limit_post_frequency(){
    /* here you could store the time() in user meta, if no existing value found.
       If the time() meta value already exists, check if it is 120 seconds in the past.
       If 120 seconds in the past, update the user meta value with time()
       Else
       Do a WP notice letting user know they need to wait, you could calculate how
       long they have to wait.
    */
}
如果使用我的方法。我会考虑在用户元值中存储一个数组,并包括尝试次数。如果用户尝试提交的次数过多,您可以将其视为安全问题并自动处理。

更新:我想添加一个关于安全性的注释。如果考虑到垃圾邮件发送者的局限性,那么他们可以使用我的方法创建大量草稿。可能存在自动删除草稿的解决方案。向作者发送电子邮件提醒,提醒他们草稿即将过期,甚至在删除帖子时向他们发送一份邮件副本,这很容易。

还要记住,帖子是可以安排的。因此,您的作者可以在达到每日限制(例如20天)后创建草稿,但可以创建计划并自动发布的草稿。我想我会喜欢创建一个插件来处理这个问题,所以我把它添加到了我的待办事项列表中。

结束