Viele Spammer versuchen durch häufiges verlinken ihrer Websites, z. B. in Kommentatoren-URLs, ihren PageRank zu erhöhen. Daher setzt WordPress die URLs von Kommentatoren von Haus aus über das Template-Tag comment_author_link() auf nofollow. nofollow weißt die Suchmaschinen an, diese Links nicht zur Berechnung der Popularität heranzuziehen.
Wer als Webseitenbetreiber allerdings Kommentatoren hat bei denen er sicher ist, dass es sich nicht um Spamlinks handelt, der kann die URLs wieder auf follow setzen bzw. das nofollow entfernen.
Wir haben mal genau dies für unsere Top10-Kommentatoren auf unserer Startseite realisiert, so werden sie 1. auf der Startseite erwähnt und 2. erhalten sie von dort aus einen suchmaschinenfreundlichen Backlink.
<?php
/* Zeige Top Kommentatoren */
$count=10;
$exclude='admin,user_xy';
$comments=$wpdb->get_results("SELECT comment_author_url, comment_author, COUNT(*) cnt
FROM $wpdb->comments
WHERE comment_approved = '1'
AND comment_type NOT IN ('pingback','trackback')
GROUP BY comment_author_url, comment_author
ORDER BY 3 DESC");
$excludes=explode(',', $exclude);
?>
<!-- ab hier der Ausgabeteil -->
<h2 class="moreposts">Top10-Kommentatoren</h2>
<ul id="top_commenter">
<?php
foreach($comments as $comment) {
if (!in_array($comment->comment_author, $excludes)) { ?>
<li>
<?php if ($comment->comment_author_url != "" && $comment->comment_author_url != "http://") { ?>
<a href="<?php comment_author_url(); ?>"><?php comment_author(); ?></a>
<?php } else { ?>
<?php comment_author(); ?>
<?php } ?>
(<?php echo $comment->cnt; ?>)
</li>
<?php if (++$ccount == $count) break;
}
}
?>
</ul>
Kleine Erklärung:
$count (Zeile 3) setzt die Anzahl der Kommentatoren, die angezeigt werden sollen.
Mit $exclude (Zeile 4) können Kommentatoren zum Ausschluss angegeben werden, z. B. die Kommentare des Admins oder Artikelautors.
Dann kommt die Datenbankabfrage ( Zeile 6-11 ) wo wir in allen veröffentlichten ( Zeile 8 ) Kommentaren ( Zeile 9 ) nach den Top-Kommentatoren und dessen Links ( Zeile 6 ) suchen. Das ganze gruppieren ( Zeile 10 ) wir nach Kommentatoren-URL und sortieren es nach Höchstzahl ( Zeile 11 ).
Jetzt kommt der eigentliche Ausgabeteil. Überschrift und UL sollten klar sein.
Dann die array-Schleife ( Zeile 20-35 ) wo erst mal durch das §excludes die o. g. Kommentatoren ausgeschlossen werden ( Zeile 21 ).
Danach der Teil im Listenelement. Und genau hier kommt jetzt nicht nur einfach comment_author_link() zum Zuge,
denn dann wäre wieder ein nofollow drin, sondern eine IF-Abfrage. Diese fragt die comment_author_url nach Inhalten ab ( Zeile 24 ). Falls eine URL hinterlegt ist, dann wird diese ohne rel=nofollow ausgegeben ( Zeile 24-26 ), ansonsten nur der Kommentatorenname ( Zeile 26-28 ).
Wer will kann dem a-Tag noch ein follow mitgeben:
<a href="<?php comment_author_url(); ?>" rel="follow"><?php comment_author(); ?></a>
Mit $comment->cnt ( Zeile 30 ) wird dann noch der Zähler ausgegeben.
Fertig!
Das ganze lässt sich dann noch ein bisschen über die style.css stylen:
ul#top_commentors{list-style:none;padding:0;}
ul#top_commentors li{float:left;padding:0 10px;border-right:1px dashed #ccc;}