2 votes

Ajout de rel="nofollow" à tous les liens dans les articles Wordpress

Je veux ajouter un rel="nofollow" à tous les liens dans mes articles wordpress et je veux pouvoir avoir une liste de liens qui ne recevront pas le nofollow.

J'ai beaucoup essayé, mais je n'arrive pas à le faire correctement, car je ne comprends pas très bien les regex.

J'ai donc la chaîne $text et je veux remplacer un href="url"> par un href="url" rel="nofollow">, sauf si le href correspond à certains domaines spécifiques.

4voto

alex Points 186293

Disons que vous avez ajouté une classe aux liens que vous ne voulez pas être suivis...

$skipClass = 'preserve-rel';

$dom = new DOMDocument;

$dom->loadHTML($str);

$anchors = $dom->getElementsByTagName('a');

foreach($anchors as $anchor) { 
    $rel = array(); 

    if ($anchor->hasAttribute('class') AND preg_match('/\b' . preg_quote($skipClass, '/') . '\b/', $anchor->getAttribute('class')) {
       continue;
    }

    if ($anchor->hasAttribute('rel') AND ($relAtt = $anchor->getAttribute('rel')) !== '') {
       $rel = preg_split('/\s+/', trim($relAtt));
    }

    if (in_array('nofollow', $rel)) {
      continue;
    }

    $rel[] = 'nofollow';
    $anchor->setAttribute('rel', implode(' ', $rel));
}

var_dump($dom->saveHTML());

Cela ajoutera nofollow à tous les liens sauf ceux qui ont une classe définie ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X