如何将评论作者限制为每个帖子只能有一条评论

时间:2015-12-02 作者:DeathByDisco

有没有办法根据评论作者的电子邮件将评论限制在每篇文章一条?

它应该适用于未登录的用户。

1 个回复
SO网友:Chris Morris

这将取决于主题如何处理保存注释。例如,如果它通过ajax提交表单,它将期望得到某些返回。

我可能会通过pre_comment_approved 滤器根据之前提交的帖子检查收到的电子邮件,如果失败,则返回未经批准的邮件。

function pre_comment_approved_handler( $approved, $commentdata ) {

    $comments =  get_comments( array(
        \'post_id\' => $commentdata[\'comment_post_ID\'],
        \'author_email\' => $commentdata[\'comment_author_email\']
    ) );

    if( !empty($comments) )
        $approved = 0;

    return $approved;
}
add_filter( \'pre_comment_approved\' , \'preprocess_comment_handler\', 10, 2 );
未经测试,但类似的东西应该可以直接阻止它。请记住,电子邮件通常是可选字段。

当注释作为挂钩和过滤器涉及到用户时,向用户添加验证反馈将是一个问题,因为这些挂钩和过滤器实际上并不存在。最好的方法是通过ajax提交表单,并在此时检查电子邮件,如果它没有发表帖子,那么您可以手动创建评论。这样,您就可以完全控制用户体验。

相关推荐

WP_MEMORY_LIMIT在wp-config中不起作用,仅在default-constants.php中起作用

我已经在这里搜索并尝试了很多东西,但我的问题仍然是“活着”可以设置WP_MEMORY_LIMIT 在默认常量内。php和这个很好,但每次我更新wordpress时,我都必须再次进行此设置。所以我的wp配置。php不会覆盖默认配置中的设置。php。wp配置文件是直接从wordpress自动创建的。我查过了this thread, 我的设置WP_MEMEORY_LIMIT 位于正下方WP_DEBUG 和之前ABSPATH 已定义。$table_prefix = \'hp365_01_\';