为外部链接永久添加rel =“ nofollow”和target =“ _ blank”

Ota*_*yon 4 wordpress

我想为WordPress帖子和页面中的所有外部链接永久添加rel =“ nofollow”和target =“ _ blank”。我知道,有些插件的功能相同,但是一旦禁用它们,所有更改都将被撤消,并且文章从一开始就是相同的。

我不知道内部或外部链接之间的区别,也不知道如何检查是否已存在rel =“ nofollow”或target =“ _ blank”属性。

我想最好的方法是使用PHP而不是MySQL。我已经在网上搜索了指南,教程或插件,但没有成功。

有人可以帮我吗?我感谢您的支持。

Ron*_*uel 6

我有一个将nofollow应用于所有现有和新的外部链接的解决方案。将代码复制到激活主题的functions.php中

function add_nofollow_content($content) {
$content = preg_replace_callback('/]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i', function($m) {
    if (strpos($m[1], "YOUR_DOMAIN_ADDRESS") === 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');
Run Code Online (Sandbox Code Playgroud)

您也可以在函数中home_url()而不是"YOUR_DOMAIN_ADDRESS"在提供的空间中调用该函数,以避免对域名进行硬编码。

该代码已经过测试,可以正常工作。希望这对您有所帮助。


zor*_*dia 0

我认为永久rel"nofollow"添加和target="_blank"到传出链接比此处显示的工作量要多。您将必须重建外部链接等插件的功能,以便甚至可以重写您的链接。wp_nav_menus

我有一个建议,在页面加载时通过 JavaScript 添加所需的属性。您可以将此脚本直接添加到主题标题中,也可以将其保存在单独的文件中,将脚本放入主题中functions.php

$(document).ready(function () {
    $( "a:not(a[href^='http://www.your-domain-name.com'],a[href^='javascript'],a[href^='#'])" ).attr({
                rel: "nofollow",
                target: "_blank"
            });
});
Run Code Online (Sandbox Code Playgroud)