Yorumlarda site üyelerini taklit edemesinler – WordPress hack


Çok üyeli WordPress sitelerinde sık yaşanan ve henüz düzeltilmeyen bir probleme çözüm getireceğiz, yorumcular siteye üye olan kişilerin isim veya e-posta adreslerini kullanamasınlar yani taklit edemesinler. Siteye üye olan kullanıcılar üye oldukları isim veya e-posta adresini ancak siteye giriş yaparlarsa kullanabilsinler.

taklitçi comment mesaj

Eğer siteye üye olan birini taklit etmeye kalkan olursa yani siteye giriş yapmadan üyelerin isim veya e-posta adresini kullanarak yorum yazan olursa onlara şekilli bir hata mesajı görüntülenecek, bu hata mesajını istediğiniz gibi değiştirebilirsiniz. İsim ve e-postalar da harf büyüklüğü geçersizdir yani büyük küçük harf duyarlılığı yok.

Yapılacak şey wp-comments-post.php dosyasını düzenlemek, içine yeni bir fonksiyon eklenecek.

Aşağıdaki talimatlar 2.2 den WordPress 2.9.2 versiyonuna kadar denenmiştir, 3.0 versiyonunda denenmemiştir.

1- wp-comments-post.php dosyasını açın, bu dosya WordPress ana dizindedir (lütfen bir adet yedeğini alın).

2- Dosyanın içinde aşağıdaki kodları bulun (2.9.2 de 43. ile 46. satırda);

$comment_author = ( isset($_POST['author']) ) ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) ) ? trim($_POST['email']) : null;
$comment_author_url = ( isset($_POST['url']) ) ? trim($_POST['url']) : null;
$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

3- Hemen altına aşağıdakileri ekleyin;

global $wpdb;
$valid_users = (array)$wpdb->get_results("
SELECT display_name, user_email FROM " . $wpdb->prefix . "users");

global $userdata;
get_currentuserinfo();
$logged_in_name = $userdata->ID;
$logged_in_email = $userdata->user_email;

$found_match = FALSE;
foreach ($valid_users as $va) {
if (trim($va->display_name) != '') {
if (strtolower($va->display_name) == strtolower($comment_author)) {
$found_match = TRUE;
break;
}
}
if (trim($va->user_email) != '') {
if (strtolower($va->user_email) == strtolower($comment_author_email)) {
$found_match = TRUE;
break;
}
}
}

// eğer taklitçiyse
if (trim($logged_in_name) == '') {
if ($found_match == TRUE) {
wp_die( __('Bu ismi veya e-posta adresi sahibi bizim uyemizdir bunu kullanarak yorum gonderemezsiniz. Eger bu isim veya e-posta adresini kullanacaksaniz <a href="/wp-admin/">siteye giris yapin</a>. Ya da geri gidin ve baska isim veya e-posta adresi kullanin.') );
}
}

4- Kaydedin ve kapatın.

Not: Aşağıdaki kısmı istediğiniz gibi değiştirebilirsiniz, bu gösterilecek hata mesajdır;
wp_die( __('Bu kısmı istediğiniz gibi değiştirebilirsiniz.') );

Yazar: Volkan Yılmaz

Digital Marketing & Growth Hacking #SEO #wolkanca #cycling merhaba@volkanyilmaz.com.tr