wordpressNão é novidade o dilema da tag rel="nofollow":

  • sem ela, links para sites pouco recomendáveis ou spams podem reduzir a credibilidade do blog perante as ferramentas de busca; e
  • com ela, desvalorizamos as contribuições legítimas de leitores e de outros autores de blogs.

Há alguns dias, concluí que o ideal era o meio termo:

  1. desativar a tag nos endereços de todos os autores de comentários, registrados ou não. Assim, leitores meus que sejam autores de outros blogs podem usufruir do meu pagerank. Esse deveria ser o comportamento padrão nos comentários.
  2. desativar a tag no corpo do comentário quando o autor deste for um usuário registrado. Em princípio, usuários registrados não fazem indicações não recomendáveis. Portanto, posso valorizar suas contribuições sem correr o risco de desativar a tag completamente.
  3. manter a tag ativa nos pingbacks e trackbacks. Apenas porque ainda não sei como evitar spam nesses casos. Além disso, os trackbacks e pingbacks normalmente não trazem links em seu corpo. Apenas na URL do autor, que já foi tratada no item 1.

A intenção era boa, mas o código estava com um erro de lógica. Apesar das aparências, o item 2 não estava sendo implementado. :oops:

Parece que, agora está correto (pelo menos em meus testes)…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
/*
Plugin Name: Registered Users DoFollow
Plugin URI: http://www.jlcarneiro.com
Description: Strips nofollow tags from author comments and comment author URL. Based on Angsuman Chakraborty's Follow URL, Denis de Bernardy's Dofollow and Kimmo Suominen's DoFollow
Version: 1.0
Author: JLCarneiro
Author URI: http://www.jlcarneiro.com/
*/
 
// Removes nofollow from all NEW comments, just to save space
remove_filter('pre_comment_author_url', 'wp_rel_nofollow');
remove_filter('pre_comment_content', 'wp_rel_nofollow');
 
// Removes nofollow from author URL on EXISTING comments
add_filter('get_comment_author_link', 'strip_nofollow');
// Removes nofollow only from registered users on EXISTING comments
add_filter('comment_text', 'follow_reg_users');
 
function follow_reg_users($text = ''){
	if (is_registereduser_comment()){
		$text = strip_nofollow($text);
	}
	return $text;
}
 
function is_registereduser_comment(){
  global $comment;
  return $comment->user_id;
}
 
function strip_nofollow($text){
	$text = preg_replace("/(<a [^>]*( |\t|\n)rel=)('|\")(([^\3]*( [^ \3]*)*) )?nofollow/", "$1$3$5", $text);
	$text = preg_replace("/(<a [^>]*)( |\t|\n)rel=(''|\"\")([^>]*>)/", "$1$4", $text);
	return $text;
}
?>

Para usar o plugin, basta baixá-lo, salvá-lo no diretório /wp-content/plugins/ de sua instalação WordPress e ativá-lo no painel de administração.

Este trabalho, salvo expressamente indicado, está licenciado sob uma Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Brazil Licença. Termos e condições além do âmbito desta licença podem estar disponíveis em www.jlcarneiro.com.