foxayb
@foxayb
newbie

Как убрать rel="nofollow" для конкретной ссылки?

Сейчас работает функция:
// добавляем rel="nofollow" для внешних ссылок, исключение вджеты, элементы интерфейса
add_filter('the_content', 'my_nofollow');
add_filter('the_excerpt', 'my_nofollow');
function my_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;
}

Как сделать шорткод, окутывая ссылку которым эта функция бы не действовала, а т.е. была бы возможность не применять для ссылки rel="nofollow"?
  • Вопрос задан
  • 587 просмотров
Решения вопроса 1
Замените строку:
if (strpos($link, 'rel') === false) {
на
if ((strpos($link, 'rel') === false) && (substr($link, 1) != '#') && (strpos($link, 'name="follow"') === false)) {


Будет еще 2 проверки, если ссылка начинается с "#" и если в ссылке есть атрибут name="follow".
Никакие шорткоды не нужны!
просто пропишите name="follow" и все:
<a href="mail.ru" name="follow">Ссылка без follow</a>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы