【问题标题】:WordPress filter APPEND nofollow to relWordPress过滤器将nofollow附加到rel
【发布时间】:2019-04-19 01:11:48
【问题描述】:

我正在尝试追加 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 willrel=follow. Why is it no appending like so?rel="noopener nofollow"`

【问题讨论】:

    标签: regex wordpress filter


    【解决方案1】:

    因为你忽略了&lt;a&gt; 标签的所有属性,除了href。如果你想考虑现有的rel 值,你也应该阅读它。也许使用一些 html 解析器功能更容易,因为 regexp 对于您的情况来说有点太低级了。

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 2014-04-26
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2011-06-29
      相关资源
      最近更新 更多