NoFollow Rel="sponsored" pre_replace
NoFollow Rel="sponsored" pre_replace
我使用 wordpress,我在我的 functions.php 中添加了一些代码,以自动将所有 link 不符合特定条件的不关注。
目前,如果 link examplesite.com
或 examplesite2.com
标记为 dofollow
否则设置为 nofollow
我用来实现它(完美运行)的代码是:
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === 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');
但是,我想添加一个附加条件。
如果站点是 examplesite
或 examplesite2.com
,则将其标记为 rel="follow"
其他
如果是 examplesite3.com
或 examplesite4.com
标记为 rel=”sponsored”
else(如果不满足其中任何一个条件return
no Follow
代替。
有人可以帮我解决这个问题吗?我尝试添加
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === false && strpos($m[1], "https://examplesite3.com") === false && strpos($m[3], "https://examplesite4.com") === false)
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
else
return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
return '<a href="'.$m[1].'" rel="sponsored" target="_blank">'.$m[3].'</a>';
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
但是它创建了一个循环并且不起作用。预先感谢您的任何想法!
我也试过这个,改变 elseif
但它似乎没有超过第二个条件。
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === false && strpos($m[3], "https://www.bluehost.com") === false && strpos($m[3], "https://amzn.to") === false)
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
elseif (strpos($m[3], "https://www.examplesponsor.com") === false && strpos($m[3], "https://www.examplesponsor2.com") === false && strpos($m[3], "https://examplesponsor3.com") === false)
return '<a href="'.$m[3].'" rel="sponsored" target="_blank">'.$m[4].'</a>';
else
return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
试试这样:
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if ((strpos($m[1], "https://www.examplesite.com") !== false) ||
(strpos($m[1], "https://www.examplesite2.com") !== false)) {
return '<a href="'.$m[1].'" rel="follow" target="_blank">'.$m[2].'</a>';
} elseif ((strpos($m[1], "https://www.examplesite3.com") !== false) ||
(strpos($m[1], "https://www.examplesite4.com") !== false)) {
return '<a href="'.$m[1].'" rel="sponsored" target="_blank">'.$m[2].'</a>';
} else {
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
}
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
这将检查是否使用 strpos 找到两个 URL 中的任何一个,并且 returns 是否适合每种情况 rel=
。对于所有其他 URL,它将 return rel="nofollow"
。如果您必须定义更多 URL,请确保在逻辑上也对它们进行 ||
。
对于更长的 URL 列表,我将更改代码结构以进行 URL → rel 类型的数组映射,并循环匹配每个匹配项的条目.
我使用 wordpress,我在我的 functions.php 中添加了一些代码,以自动将所有 link 不符合特定条件的不关注。
目前,如果 link examplesite.com
或 examplesite2.com
标记为 dofollow
否则设置为 nofollow
我用来实现它(完美运行)的代码是:
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === 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');
但是,我想添加一个附加条件。
如果站点是 examplesite
或 examplesite2.com
,则将其标记为 rel="follow"
其他
如果是 examplesite3.com
或 examplesite4.com
标记为 rel=”sponsored”
else(如果不满足其中任何一个条件return
no Follow
代替。
有人可以帮我解决这个问题吗?我尝试添加
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === false && strpos($m[1], "https://examplesite3.com") === false && strpos($m[3], "https://examplesite4.com") === false)
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
else
return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
return '<a href="'.$m[1].'" rel="sponsored" target="_blank">'.$m[3].'</a>';
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
但是它创建了一个循环并且不起作用。预先感谢您的任何想法!
我也试过这个,改变 elseif
但它似乎没有超过第二个条件。
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "https://www.examplesite.com") === false && strpos($m[1], "https://www.examplesite2.com") === false && strpos($m[3], "https://www.bluehost.com") === false && strpos($m[3], "https://amzn.to") === false)
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
elseif (strpos($m[3], "https://www.examplesponsor.com") === false && strpos($m[3], "https://www.examplesponsor2.com") === false && strpos($m[3], "https://examplesponsor3.com") === false)
return '<a href="'.$m[3].'" rel="sponsored" target="_blank">'.$m[4].'</a>';
else
return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
试试这样:
function add_nofollow_content($content) {
$content = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if ((strpos($m[1], "https://www.examplesite.com") !== false) ||
(strpos($m[1], "https://www.examplesite2.com") !== false)) {
return '<a href="'.$m[1].'" rel="follow" target="_blank">'.$m[2].'</a>';
} elseif ((strpos($m[1], "https://www.examplesite3.com") !== false) ||
(strpos($m[1], "https://www.examplesite4.com") !== false)) {
return '<a href="'.$m[1].'" rel="sponsored" target="_blank">'.$m[2].'</a>';
} else {
return '<a href="'.$m[1].'" rel="nofollow" target="_blank">'.$m[2].'</a>';
}
},
$content);
return $content;
}
add_filter('the_content', 'add_nofollow_content');
这将检查是否使用 strpos 找到两个 URL 中的任何一个,并且 returns 是否适合每种情况 rel=
。对于所有其他 URL,它将 return rel="nofollow"
。如果您必须定义更多 URL,请确保在逻辑上也对它们进行 ||
。
对于更长的 URL 列表,我将更改代码结构以进行 URL → rel 类型的数组映射,并循环匹配每个匹配项的条目.