Varning för Thematic

Idag vill jag rikta ett jättetack till Magnus Brååth (sökmotorkonsult) som uppmärksammade att jag hade tappat positioner på termen sökmotoroptimering. Samtidigt vill jag utfärda en rejäl varning för WordPress-temat Thematic som jag nyligen bytte till här på Nikke Index.

Magnus hade upptäckt att min kategorisida Sökmotoroptimering helt hade försvunnit från Google. Den syntes faktiskt inte över huvud taget på de 1000 första sökträffarna i Google. En stillsam panik utbröt förstås på Fleminggatan och jag började vilt leta anledningar. Jag hade två spår. Antingen hade någon gett sig på att skjuta bort min sida från sökresultaten eller också hade mitt byte av WP-tema ställt till det på något sätt.

Bortskjutningsspåret gav jag upp rätt fort. Det fanns helt enkelt inga nya inlänkar till min sida, och Google Webmastertools visade heller inga udda ankarfraser till sajten.

I samband med CSS Naked Day, passade jag på att byta WordPress-tema till Thematic, som är ett rent tema som man kan anpassa med hjälp av underteman och ändå behålla all funktionalitet i en annan katalog. Det passar mig fint eftersom jag gillar att skilja på innehåll, funktion och form så mycket som möjligt. Det visade sig dock att Thematic innehåller i högsta grad oönskad funktionalitet som innebär att man säger åt sökrobotar att inte indexera kategorisidor. Det gör mig galen!

Om ni tänker använda er av Thematic och vill att era kategorisidor ska indexeras av Google så föreslår jag att ni genast går in och ändrar i filen thematic/library/extensions/hooks-filters.php.

OBS! I senare versioner av Thematic verkar koden nedan ha flyttats till filen header_extensions.php. Jag har sedan länge lämnat Thematic bakom mig, men där hittar ni samma, enligt mig, felaktiga kod. Stort tack till Niklas Jacobsen för påpekandet.

På rad 345 hittar man följande, ur sökmotorvänlighet rent skadliga kodsnutt:

// create meta-tag robots
function thematic_create_robots() {
    $content = "\t";
    if((is_home() && ($paged < 2 )) || is_front_page() || is_single() || is_page() || is_attachment()) {
      $content .= "<meta name=\"robots\" content=\"index,follow\" />";
    } elseif (is_search()) {
        $content .= "<meta name=\"robots\" content=\"noindex,nofollow\" />";
    } else {
        $content .= "<meta name=\"robots\" content=\"noindex,follow\" />";
    }
    $content .= "\n\n";
    echo apply_filters('thematic_create_robots', $content);
}

Funktionen skriver ut metataggen robots för olika sidor på sajten. Den första if-satsen säger att förstasidan (is_home och is_front_page), den första följande-sidan (paged<2) , enstaka blogginlägg (is_single), sidor (is_page) och bilder (is_attachment) ska indexeras av sökrobotar. För dessa sidor skrivs meta-taggen robots ut med innehållet index,follow vilket betyder att sökmotorerna ska indexera sidorna och följa länkarna på dem.

Den följande elseif-satsen gäller sökresultat på bloggen. Där tycker temasnickrarna varken att sökmotorerna ska indexera eller följa länkarna. Jag håller inte alls med.

Sist, i else-satsen (vilket alltså gäller alla andra sidor på sajten, som till exempel kategorisidor och taggsidor, skrivs innehållet i metataggen ut som noindex,follow vilket av sökmotorerna tolkas som att man inte vill att sidorna indexeras men att de gärna får följa länkarna.

Jag tycker hela övningen är ren idioti. Det finns ingen som helst anledning att förhindra sökmotorer från att indexera några som helst sidor på en blogg. Jag har därför ändrat hela funktionen så att innehållet i metataggarna alltid skrivs ut som index,follow:

// create meta-tag robots
function thematic_create_robots() {
    $content = "\t";
    if((is_home() && ($paged < 2 )) || is_front_page() || is_single() || is_page() || is_attachment()) {
      $content .= "<meta name=\"robots\" content=\"index,follow\" />";
    } elseif (is_search()) {
        $content .= "<meta name=\"robots\" content=\"index,follow\" />";
    } else {
        $content .= "<meta name=\"robots\" content=\"index,follow\" />";
    }
    $content .= "\n\n";
    echo apply_filters('thematic_create_robots', $content);
}

Jag föreslår att ni, om ni, om ni använder Thematic och inte bara vill ha sökträffar till enstaka blogginlägg, gör samma sak.

Anledningen till att myten om att kategorisidor och taggsidor inte ska indexeras har uppstått kommer nog ur en överdriven rädsla för internt duplicerat innehåll på bloggen. Det är något som man ska ta hänsyn till, men man kan göra det på andra, bättre sätt. Det bästa är att enbart visa delar av innehållet i bloggposter på kategorisidor och taggsidor, och det är något som även det, redan finns inbyggt i Thematic. Därför är hela funktionen thematic_create_robots helt onödig.

I övrigt gillar jag fortfarande Thematic. Det är ett bra tema att bygga vidare på. Men glöm för all del inte att göra den här kodändringen innan ni börjar använda det.