記事内リンクを別タブで開くようにする方法

はじめに

以前クラウドワークスで、記事内のリンクを別タブに開くようにして欲しいというご依頼があり、応募したところ、ありがたいことに仕事を任せていただきました。

本記事では、今回実装した内容について書いていきます。

functions.phpに記述する内容

結論のソースコードです。

add_filter( 'the_content', 'add_external_content', 1 );

function add_external_content( $content ) {
    preg_match_all( '/<a[^>]+?href[^>]+?>/i', $content, $link_array );

    $my_url = preg_quote( rtrim( get_bloginfo('url'), '/' ) . '/', '/' );

    foreach( array_unique( $link_array[0] ) as $link ) {
        $replaced = $link;

        if( !preg_match( '/href=[\'|\"]?\s?' . $my_url . '[^>]+?[\'|\"]/i', $link ) ) {

            if( !preg_match( '/.+?target\s?=[\'|\"]?\s?_?blank.+?/i', $link ) ) {
                $replaced = str_replace( '>', ' target="_blank">', $replaced );
            }

            $content = str_replace( $link, $replaced, $content );
        }
    }
    return $content;
}

これで、目次を含む内部リンク以外のリンクを外部リンクに置き換えることができます。

参考サイト

こちらのサイトを参考にしました。

今回のご依頼内容

こちらで確認できます。

メッセージの文面が明るく、素晴らしいご依頼者の方でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です