کد جلوگیری از کامنت های اسپم در وردپرس بدون پلاگین

کامنت های اسپم در وردپرس – حتما برای شما هم پیش آمده که کامنت هایی به زبان انگلیسی و دارای لینک های طولانی و زیادی می باشد که به عنوان اسپم شناخته می شود ثبت می گردد .
در این آموزش این نوع کامنت ها را فیلتر کرده و به طور مستقیم به زباله دان نظرات می فرستیم .
ابتدا دموی پایین را جهت درک بهتر مشاهده کنید :
دموی برنامه
کد فیلتر نظرات اسپم
کد زیر را در فایل functions.php استفاده کنید :
add_filter('comment_post_redirect' , 'rpd_filter_comment' , 10 , 2);
function rpd_filter_comment($location , $comment){
$comment = (array)$comment;
$comment_content = $comment['comment_content'];
$comment_ID = $comment['comment_ID'];
$isPersianWord = filter_persian_strings($comment_content);
if(!$isPersianWord)
wp_trash_comment($comment_ID);
return $location;
}
function filter_persian_strings($text){
$pattern = '\u0627|\u0622|\u0628|\u067e|\u062a|\u062b|\u062c|\u0686|\u062d|\u062e|\u062f|\u0630|\u0631|\u0632|\u0698|\u0633|\u0634|\u0635|\u0636|\u0637|\u0638|\u0639|\u063a|\u0641|\u0642|\u06a9|\u06af|\u0644|\u0645|\u0646|\u0648|\u0647|\u06cc';
$tmpText = json_encode($text);
$patternList = explode('|' , $pattern);
$counter = 0;
$hasPersianChar = false;
foreach($patternList as $pl){
if(strpos($tmpText , $pl)!==false) $counter++;
if($counter == 3){
$hasPersianChar = true;
continue;
}
}
return $hasPersianChar;
}
ارسال نظر