每分钟限制1条全局评论

时间:2016-09-03 作者:Suphannee

我需要一个功能来限制同一个用户在我的wordpress网站(所有帖子)上每分钟最多留下1条评论。

1 个回复
SO网友:Ismail

将以下内容放入自定义插件或子主题的函数文件中:

add_action("wp_insert_comment", function() { 
    global $current_user;
    if ( !$current_user->ID ) return;
    update_user_meta( $current_user->ID, "se_last_commented", time() );
});

add_action("init", function() { 
    if ( "wp-comments-post.php" == $GLOBALS[\'pagenow\'] ) {
        global $current_user;
        if ( !$current_user->ID ) return;
        $last_commented = (int) get_user_meta( $current_user->ID, "se_last_commented", 1 );
        if ( !$last_commented ) return; // no time recorded
        if ( (time() - $last_commented) > DAY_IN_SECONDS ) {
            $date = date( "H -1-, i -2-, s -3-", DAY_IN_SECONDS - (time() - $last_commented) );
            $date = str_replace( array(\'-1-\',\'-2-\',\'-3-\'), array(\'hr\',\'min\',\'sec\'), $date );
            wp_die(sprintf( \'<strong>ERROR:</strong> You have <u>%s</u> left until you can be able to post a comment.\', $date ));
        }
    }
}, 0);
基本上,它所做的是记录用户上次发表评论的时间整数,这里的用户是指登录的WP用户,当任何用户提交评论时,WP将自动检查该用户上次发表评论的时间以及是否超过一天(DAY_IN_SECONDS) 然后,该过程将被允许,否则用户将看到一个死亡屏幕,在该屏幕上,他们将被告知需要等待多长时间才能发布评论。

希望这有帮助。