Evitar que un comentarista se haga pasar por el autor del blog

A quién no le ha pasado alguna vez que algún troll molesto se ha hecho pasar por el autor del blog para decir cosas que no son, o simplemente para romper las pelotas molestar. Para eso hay solución, acabo de encontrar un excelente hack creado por la gente de Dragon Design, que nos permite bloquear los comentarios de personas que se quieran hacer pasar por nosotros.

El hack funciona de una manera muy sencilla, lo que hace es verificar, al momento que el usuario envía el comentario, que los datos no coincidan con el nombre de usuario o el mail del administrador del blog, y si éstos llegan a coincidir les aparece un mensaje de error diciendo que no pueden usar la identidad del dueño del blog.

Obviamente cuando ustedes estén logueados con los datos de la cuenta ésto pierde efecto y pueden comentar normalmente, funciona para los comentaristas que no están logueados.

Para utilizarlo tenemos que seguir estos pasos, yo lo he testeando en WordPress 2.5.1 y anda perfecto:

  1. Abrimos el fichero wp-comments-post.php -que se encuentra en el directorio raíz de WordPress- con un editor de texto plano (primero hagan backup).
  2. Ubicamos el siguiente bloque de código:
    $comment_author       = trim(strip_tags($_POST['author']));
    $comment_author_email = trim($_POST['email']);
    $comment_author_url   = trim($_POST['url']);
    $comment_content      = trim($_POST['comment']);
  3. Luego de ése bloque de código pegamos lo siguiente:
    // get list of user (display) names for blog
    global $wpdb;
    $valid_users = (array)$wpdb->get_results("
      SELECT display_name, user_email FROM " . $wpdb->prefix . "users");
    
    // get ID of logged in user (if there is one)
    global $userdata;
    get_currentuserinfo();
    $logged_in_name = $userdata->ID;
    $logged_in_email = $userdata->user_email;
    
    // see if the comment author matches an existing author
    $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;
        }
      }
    }
    
    // if commenter is not logged in, but match was found, block the comment
    if (trim($logged_in_name) == '') {
      if ($found_match == TRUE) {
        wp_die( __('You cannot post using the name or email of a registered author.') );
      }
    }

Si quieren personalizar el mensaje que les aparecerá a los supuestos ladrones de identidad tienen que cambiar ésta línea, ahí pueden poner el mensaje que deseen:

wp_die( __('You cannot post using the name or email of a registered author.') );

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.