web-dev-qa-db-ja.com

- add_filter( 'the_content'、 'make_clickable')を使用して新しいタブでリンクを開く。

Function.phpの次のコードは、リンクをクリック可能にするためにうまく機能します。

add_filter( 'the_content', 'make_clickable',    12 );

しかし、リンクを新しいタブで開くようにすることはできますか?

3
anandmongol

このためのネイティブ関数があるかどうかはわかりませんが、ちょっとした正規表現がそのケースを助けるかもしれません:

function open_links_in_new_tab($content){
    $pattern = '/<a(.*?)?href=[\'"]?[\'"]?(.*?)?>/i';

    $content = preg_replace_callback($pattern, function($m){
        $tpl = array_shift($m);
        $hrf = isset($m[1]) ? $m[1] : null;

        if ( preg_match('/target=[\'"]?(.*?)[\'"]?/i', $tpl) ) {
            return $tpl;
        }

        if ( trim($hrf) && 0 === strpos($hrf, '#') ) {
            return $tpl; // anchor links
        }

        return preg_replace_callback('/href=/i', function($m2){
            return sprintf('target="_blank" %s', array_shift($m2));
        }, $tpl);

    }, $content);

    return $content;
}

add_filter('the_content', 'open_links_in_new_tab', 999);

パターンは少し改善が必要かもしれません。それが役立つことを願っています!

4
Samuel Elh