web-dev-qa-db-fra.com

Un plugin pour avoir rel = "nofollow" dans les posts?

Je voudrais faire tous les liens dans les messages sur l'un de mes sites pour être avec rel = "nofollow" sur les liens à l'intérieur des messages. Je n'ai pas pu trouver de plug-in qui fasse l'affaire, à l'exception de WP-NoExternalLinks. Cela n’a pas non plus fonctionné, à moins que j’utilise cette option:

"Masquer TOUS les liens dans le document (peut ralentir votre blog et entrer en conflit avec certains cache et autres plugins. S'il vous plaît, utilisez-le à vos risques et périls."

Mais quand je l'utilise, cela met aussi nofollow sur les liens de ma blogroll (que j'aurais préféré garder en vie.)

Toute suggestion de ce qui pourrait être la cause? ou comment le résoudre?

Merci.

1
Tal Galili

vous pouvez ajouter un filtre dans votre function.php add

// Nofollow in content
add_filter('the_content', 'my_nofollow');

function my_nofollow($content) {
    //return stripslashes(wp_rel_nofollow($content));

    return preg_replace_callback('/<a[^>]+/', 'my_nofollow_callback', $content);
}

function my_nofollow_callback($matches) {
    $link = $matches[0];
    $site_link = get_bloginfo('url');

    if (strpos($link, 'rel') === false) {
        $link = preg_replace("%(href=\S(?!$site_link))%i", 'rel="nofollow" $1', $link);
    } elseif (preg_match("%href=\S(?!$site_link)%i", $link)) {
        $link = preg_replace('/rel=\S(?!nofollow)\S*/i', 'rel="nofollow"', $link);
    }
    return $link;
}
3
웃mauri

Avez-vous essayé d'utiliser jQuery pour ajouter le nofollow? Je pense que si je comprends bien votre message, vous voulez UNIQUEMENT arrêter le suivi sur les liens externes, mais suivre les liens internes correct?

$(function() {
    $("a[href^=http://]").attr("rel","nofollow");
});
1
Chadster_BAM

Il y a le plugin Rel Nofollow maintenant, qui fait ce qui est nécessaire ici.

Citant sa description:

Lorsqu'une publication est enregistrée, le plug-in ajoute les attributs rel = "nofollow" pour publier des liens. Le plugin fournit également une case à cocher apt pour exclure une publication de l'action du plugin.

0
Ste_95
/**
* add nofollow to links
*/
function add_nofollow_content($content) {
    $content = preg_replace_callback(
        '/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
    function($m) {
        if (strpos($m[1], "YOUR_DOMAIN_HERE") === false)
            return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
        else
            return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
    },
    $content);
    return $content;
}
add_filter('the_content', 'add_nofollow_content');

Cette fonction utilise l'expression régulière pour trouver le lien http et d'autres liens, puis ignore également l'ajout de nofollow aux liens contenant votre nom de domaine. Plus de détails sur http://digitizor.com/2014/07/05/add-nofollow-external-wordpress/ . Plus de détails sont inclus sur cette page sur l'ajout d'autres domaines.

0
Deb