在使用wordpress建站時,常常遇到被垃圾留言困擾,有些通過機器發垃圾留言,一發就是成百上千條,這個很煩人,因此,有些人干脆直接在wordpress網站上把留言評論功能給關閉了。
如果你的wordpress主題必須要使用留言評論,有一個辦法可以規避這個問題,即實現wordpress一篇文章只雞同一IP的人評論一次就可以。
將以下代碼添加到functions.php中
// 一篇文章只允許同一IP評論一次
//獲取評論用戶的ip,參考wp-includes/comment.php
function wdp_getIP() {
$ip = $_SERVER['REMOTE_ADDR'];
$ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip );
return $ip;
}
function wdp_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 = '".wdp_getIP()."') LIMIT 0, 1;");
if($bool)
wp_die('留言已提交,請勿重復留言。<a href="'.get_permalink($commentdata['comment_post_ID']).'">點此返回</a>');
}
return $commentdata;
}
add_action( 'preprocess_comment' , 'wdp_only_one_comment', 20);