No és gaire habitual, però a vegades algun comentarista es fa passar er l’autor del blog, cosa que pot ocasionar molts problemes.

Per evitar-ho, tenim dues opcions: restringir els comentaris als usuaris registrats o retocar codi. Nosaltres retocarem codi, que és més senzill, perquè la gent no se sol registrar en un lloc per enviar un comentari de tant en tant…

El hack que farem servir l’han creat els de Dragon Design i és bastant simple: comprova que les dades que introdueixi el comentarista no coincideixin amb les de l’autor del blog, i si ho fan, mostra un missatge d’error. Òbviament, si vosaltres ou l’autor del blog i no esteu connectats, no us deixarà posar un comentari amb les vostres dades… Només caldrà que us connecteu.

Per fer servir el hack, haurem de:

  1. Obrir l’arxiu wp-comments-post.php, ubicat al directori arrel de WordPress.
  2. Buscar el codi següent:
    $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. Afegir just a sota del codi anterior el codi següent:
    // 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.’) );
    }
    }

En el cas que vulguem editar el missatge d’error, només cal editar la línia
wp_die( __('You cannot post using the name or email of a registered author.') );