How to add a target to a link

时间:2019-08-21 作者:Pavel

是否有一个过滤器可以用来获取和更改链接的html输出?在某些情况下,我需要添加target=“_blank”。

我正在使用filter post\\u链接在必要的地方更改url本身,但我还需要能够修改html部分。我找不到正确的过滤器,我遇到了一个“edit\\u post\\u link”过滤器,但这并没有奏效,因为它似乎只在后端工作。

谢谢所有能给我一些提示的人!

1 个回复
SO网友:Mike Baxter

如果使用过滤器“the\\u content”,则可以使用以下组合preg_... 语句循环所有链接,将target=“\\u blank”添加到符合您特定需求的链接中。可以将此筛选器添加到函数中。php,或选择页面、帖子或类别templates .

add_filter( \'the_content\', \'ex1_the_content_filter\' );
function ex1_the_content_filter($content) {
    // finds all links in your content
    preg_match_all(\'/(\\<a href=.*?a>)/\',$content,$matches, PREG_SET_ORDER);

    // loop through all matches
    foreach($matches as $m){
        // potential link to be replaced...
        $toReplace = $m[0];

        // if current link does not already have target="{whatever}"
        // You can add whatever additional "IF" you require to this one
        if (!preg_match(\'/target\\s*\\=/\',$toReplace)){
            // adds target="_blank" to the current link
            $replacement = preg_replace(\'/(\\<a.*?)(\\>)(.*?\\/a\\>.*?)/\',\'$1 target="_blank"$2$3\',$toReplace);
            // replaces the current link with the $replacement string
            $content = str_ireplace($toReplace,$replacement,$content);
        }
    }
      return $content;
}

相关推荐

Permalinks setting

所以,我知道这是一个基本的问题,但奇怪的是,它对我不起作用。我想要的:https://example.com/blog/thema/类别名称/postname(用于帖子)https://example.com/blog/thema/类别名称(适用于类别)以下是我的设置:遗憾的是,这行不通。以下是有关在什么设置下工作的详细信息:Posts: /blog/thema/%category%/%postname%/ + Category: blog/thema = 分类工作,帖子获取404Posts: /%cat