WordPress und NoFollow in der Navigation

by Valentin

Spätestens seit dem Interview von Matt Cutts bei StoneTemple ist PageRank–Shaping mit dem «nofollow»–Attribut ein heißes Thema in der SEO–Landschaft. Für diejenigen, bei denen es nicht klingelt: Man setzt bei internen Links auf Seiten, die für Suchmaschinen weniger relevant sind (beispielsweise «Kontakt» oder «Datenschutzerklärung») ein «rel=”nofollow”»–Attribut um unnötiges Abfließen von PR zu vermeiden und konzentriert den «Link Juice» so auf den tatsächlich relevanten Seiten.

Nach eingehender Analyse beschloss ich also letztens, bei einem Kunden — der ein angepasstes WordPress als CMS verwendet — einige Seiten mit NoFollow zu versehen. Nur wie?

Das für die Navigation verwendete wp_list_pages() bietet keine Möglichkeit, nofollow–Attribute zu setzen, schon gar nicht für einzelne Seiten. Nach einer halben Stunde Arbeit bin ich zu folgender Lösung gekommen, die ich hier mit der Weltöffentlichkeit teilen möchte:


<ul>
<?php
global $wp_query;
$thePostID = $wp_query->post->ID;
$pages = get_pages('sort_column=menu_order&title_li=');
foreach($pages as $page) {
$css_class = "page_item";
$rel_nofollow = false;
$page_id = $page->ID;
$foreach_title = get_the_title($page);
if($page_id == $thePostID)
{
$css_class="current_page_item";
}
if(get_post_meta($page_id, 'nofollow', true) == 'nofollow') {
$rel_nofollow = true;
}
$output = '<li class="';
$output .= $css_class;
$output .= '"><a href="';
$output .= get_page_link($page_id);
$output .= '" title="';
$output .= wp_specialchars($foreach_title);
$output .= '"';
if ($rel_nofollow) {
$output .= ' rel="nofollow"';
}
$output .= '>';
$output .= $foreach_title;
$output .= "</a></li>\n";
echo($output);
} ?>
</ul>

Die Verwendung ist denkbar einfach: Seiten, auf die nur mit NoFollow gelinkt werden soll, gibt man ein «Benutzerdefiniertes Feld»/«Custom Field» mit dem Namen «nofollow» und dem Wert «nofollow» … Fertig ist die Kiste.

Viel Spaß!