Etliche Tutorials im Netz beschäftigen sich mit der Frage, wie ich die RSS-Feeds in WordPress mit einem nofollow Attribut versehen kann. Diese Anforderung kommt seitens SEO in vielen Onpage-Optimierungstasks vor. Die meisten Lösungen editieren dabei Core-Dateien, was durch die hohen Updatezyklen bei WordPress keine praxisnahe Lösungen sind. Daher zeigen wir Euch hier, wie ihr über eine Template Modifikation (natürlich im Child-Theme) eine updatesichere Lösung erstellen könnt.

Bearbeiten der functions.php – regex zur RSS-Modifzierung

Jedes Template besitzt in WordPress eine functions.php – diese ergänzen wir um eine rss_widget_filter Funktion.  
function rss_widget_filter( $content ) {
     
    $regex = '#<li id="rss-2".*>(.*?)</li>#';
    $code = preg_match( $regex, $content, $rss_widget );
     
    $regex2 = '#<li>(.*?)</li>#';
    $code = preg_match_all( $regex2, $rss_widget[0], $li );
     
    $result = '';
    foreach( $li[0] as $a ) {
        $a = preg_replace( '#<a class#', '<a rel="nofollow" class', $a );
        $result .= $a;
    }
     
    $final = preg_replace( '#<li>(.*)</li>#', $result, $rss_widget[0] );
    $final = preg_replace( '#<li id="rss-2".*>(.*?)</li>#', $final, $content );
     
    if( !empty( $final ) )
        return $final;
    else
        return $content;
     
}
add_filter( 'rss_filter', 'rss_widget_filter' );
 

Bearbeitung der Ausgabe im WordPress-Template – RSS-Ausgabe mit nofollow in der Sidebar

Mit den ob_ Funktionen wird das Ausführen des zugrundeliegenden PHP gestoppt. Durch die oben in der Funktion programmierten regex holen wir uns die Stelle des Link-Aufrufs und überschreiben diesen mit dem nofollow Attribut – und zwar an der Stelle im Template, an der der RSS-Feed ausgegeben werden soll. Hier im Beispiel wird durch den Aufruf der Funktion “dynamic_sidebar” die komplette Sidebar aufgerufen, in der das RSS-Widget enthalten ist.  (Achtung: Das RSS-Widget muss vorher im Menü Widgets der Sidebar hinzugefügt werden)
ob_start();
dynamic_sidebar('primary-sidebar');
$content= ob_get_contents();
ob_end_clean();
$final= apply_filters( 'rss_filter', $content);

Screenshot RSS Widget in Sidebar

rss feed nofollow sidebar
Im Ergebnis wird kein Linkjuice an die extern verlinkten Seiten vererbt und die Seite ist pagerank-optimiert.

Dir gefällt mein Beitrag?

Auf Codepalm.de gibt es mehr interessante Beiträge rund um die Programmierung.