8 códigos para mejorar los comentarios de WordPress

Los comentarios son un aspecto esencial en nuestro sitio web, ya que es por donde los usuarios interactúan con nosotros. En este artículo, te mostraré unos cuantos códigos para mejorar los comentarios de WordPress.

Permitir tags HTML en los comentarios de WordPress

Por defecto, WordPress permite a los usuarios utilizar ciertos tags HTML en el área de comentarios. Pero dependiendo del sitio web, puede ser que quieras que los usuarios tengan completa libertad en ese sentido.

Para llevar a cabo esto, simplemente pega el código de abajo en el fichero functions.php de tu tema. Puedes modificar la lista de tags permitidos en la línea 4.

// Creamos una función que permita más tags en los comentarios
function allow_pres() {
  global $allowedtags;
  $allowedtags['pre'] = array('class'=>array());
}

// La añadimos al hook
add_action('comment_post', 'allow_pres');

Eliminar los enlaces automáticos en los comentarios

Cuando un usuario pega una url en el formulario de comentarios, WordPress automáticamente la convierte en un enlace. En la mayoría de casos, esto está bien, pero personalmente no me gusta que otras personas utilicen mi sitio web para promocionar sus productos y servicios.

Eliminar los enlaces automáticos es súper sencillo. Solo tines que insertar esta línea en el fichero functions.php.

remove_filter('comment_text', 'make_clickable', 9);

Eliminar el campo url del formulario de comentarios

Si quieres que los usuarios ingresen la dirección de su sitio web, aquí tienes un pequeño código para impedirlo. Simplemente pega el código en el functions.php de tu tema y, ¡problema resuelto!

function remove_comment_fields($fields) {
    unset($fields['url']);
    return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');

Añadir más campos al formulario de comentarios

En el apartado de antes te he mostrado cómo eliminar un campo del formulario de comentarios, pero ahora, iremos un poco más allá, añadiremos un nuevo campo al formulario. En el ejemplo, añadiremos un nuevo campo edad en el formulario de comentarios.

Empezaremos añadiendo el campo. Para hacer esto, copia y pega el código de más abajo en el fichero functions.php de tu tema.

function add_comment_fields($fields) {
 
    $fields['edad'] = '<p class="comment-form-edad"><label for="edad">' . __( 'Edad' ) . '</label>' .
        '<input id="edad" name="edad" type="text" size="30" /></p>';
    return $fields;
 
}
add_filter('comment_form_default_fields','add_comment_fields');

function add_comment_meta_values($comment_id) {
 
    if(isset($_POST['edad'])) {
        $edad = wp_filter_nohtml_kses($_POST['edad']);
        add_comment_meta($comment_id, 'edad', $edad, false);
    }
 
}
add_action ('comment_post', 'add_comment_meta_values', 1);

Ahora, para mostrar la edad del usuario, utilizaremos el siguiente código:

<?php echo "Edad: ".get_comment_meta( $comment->comment_ID, 'edad', true ); ?>

Insertar comentarios mediante programación

En ciertos casos, es posible que desees insertar comentarios mediante programación. Hacerlo es definitivamente fácil, como puedes ver a continuación. Simplemente ejecuta este código y se insertará un nuevo comentario en tu base de datos.

$data = array(
	'comment_post_ID' => 1,
	'comment_author' => 'admin',
	'comment_author_email' => '[email protected]',
	'comment_author_url' => 'http://www.wpdirecto.com',
	'comment_content' => 'Lorem ipsum dolor sit amet...',
	'comment_author_IP' => '127.0.0.1',
	'comment_agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
	'comment_date' => date('Y-m-d H:i:s'),
	'comment_date_gmt' => date('Y-m-d H:i:s'),
	'comment_approved' => 1,
);

$comment_id = wp_insert_comment($data);

Desactivar los comentarios en posts que tienen más de X días

Si tu web es muy famosa, probablemente recibirás un montón de comentarios, algunos en posts muy antiguos… ¿Por qué no desactivar automáticamente los comentarios en posts que tienen más de X días?

Pega el código de abajo en tu archivo functions.php. El código inhabilitará los comentarios en posts que cuenten con más de 30 días. La cantidad de días se puede modificar en la línea 3.

function close_comments( $posts ) {
	if ( !is_single() ) { return $posts; }
	if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) {
		$posts[0]->comment_status = 'closed';
		$posts[0]->ping_status    = 'closed';
	}
	return $posts;
}
add_filter( 'the_posts', 'close_comments' );

Añadir target=”blank” a todos los enlaces de los comentarios

Utilizando el tag HTML target=”_blank” es posible abrir los enlaces en una nueva pestaña o ventana. Por lo que si quieres añadir el atributo target=”_blank” en los enlaces que se añadan en los comentarios de WordPress, simplemente pega el siguiente código en el functions.php de tu tema y, ¡ya está!

function autoblank($text) {
	$return = str_replace('<a', '<a target="_blank"', $text);
	return $return;
}
add_filter('comment_text', 'autoblank');

Personalizar el diseño de los comentarios

Por defecto, WordPress muestra el listado de comentarios de forma estándar, pero puedes personalizarla si es necesario. Pega el siguiente código en el fichero functions.php y personalízalo como desees.

function my_custom_comments($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>
   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
   <?php if ($comment->comment_approved == '0') : ?>
      <em><?php _e('Tu comentario está pendiente de moderación.') ?></em>
   <?php endif; ?>

   // Aquí iría el diseño de los comentarios 

}

Una vez hecho, utiliza la siguiente línea de código en comments.php para mostrar tus nuevos comentarios.

<?php wp_list_comments("callback=my_custom_comments"); ?>

Y hasta aquí nuestro artículo en el que os mostraba 8 códigos para mejorar los comentarios de WordPress. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. El icono de la imagen destacada es obra de Тимур Минвалеев y de Trevor Dsouza. ¡Nos leemos!

Dejar respuesta

Please enter your comment!
Please enter your name here