Фильтр WordPress ПРИЛОЖЕНИЕ - PullRequest
       6

Фильтр WordPress ПРИЛОЖЕНИЕ

0 голосов
/ 18 апреля 2019

Я пытаюсь добавить nofollow, чтобы добавить внешние ссылки.Если ссылка не имеет атрибута rel, будет добавлено rel="nofollow".Если ссылка уже имеет rel="nofollow", то ничего не произойдет, и если ссылка имеет rel=something else, значение nofollow также следует добавить.

function nofollow($content) {
  $content = preg_replace_callback('/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
  function($m) {
    $parseUrl = parse_url(home_url());
    $mydomain = $parseUrl['host'];
    if (strpos($m[1], $mydomain) === false) {
      return '<a href="'.$m[1].'" rel="nofollow">'.$m[2].'</a>';
    } else {
      return '<a href="'.$m[1].'">'.$m[2].'</a>';
    }
  },
  $content);
  return $content;
}
add_filter('the_content', 'nofollow');

Код успешно добавляет rel=follow к внешним ссылкам, ноесли для примера ссылка имеет rel="noopener" it will replace it will rel = follow . Why is it no appending like so? rel = "noopener nofollow" `

1 Ответ

0 голосов
/ 18 апреля 2019

Поскольку вы игнорируете все атрибуты тега <a>, кроме href.Если вы хотите учесть существующее значение rel, вам следует также прочитать его.А может быть, это проще сделать с какой-нибудь функцией парсера html, потому что регулярное выражение слишком низкоуровневое для вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...