先日、Google Chromeで「target=”_blank”」の入ったAmazonのAリンクを開こうとしました。
すると、開いた瞬間すぐに閉じてしまいました。どうやら原因は、広告をブロックする拡張が入っていたせいで、広告リンクと判断されて閉じてしまったようです。
おそらくこれと同じ症状です。
で、「これを解消するにはどうしたらよいのか?」と疑問に思ったので、いろいろ試してみたら、「target=”_blank”」を入れなければ、現在のタブにAmazonページが開かれるので、閉じることはないようでした。「target=”_self”」の挙動ですね。
で僕のサイトの場合、外部サイトへのリンクは、「target=”_blank”」を利用して、新規タブで開いて、内部リンクは同じタブで開くといった仕様にしていました。
ただ、最近思うんです「target=”_blank”」は必要なのか?と。以下に書かれている記事と同様の疑問を感じていました。
そんな時は、実際に双方を試してみることが重要です。
ただ、全ての記事の「target=”_blank”」を編集して外すのは面倒くさすぎるので、「Wordpressの本文からtarget=”_blank”を除去する方法」を書いたのでメモがてら紹介です。
目次
投稿本文からtarget=”_blank”を削除するコード
で、書いたコードがこちらです。Wordpressテーマのfunctions.phpにコピペするだけで利用できます。
//本文からtarget属性を取り除く add_filter('the_content', function ($the_content){ //target属性を取り除く $the_content = preg_replace('/ +target=["][^"]*?["]/i', '', $the_content); $the_content = preg_replace('/ +target=[\'][^\']*?[\']/i', '', $the_content); return $the_content; }, 999999999);
これにより、よほどトリッキーなtarget属性の書き方をしてない限りは、ほぼ全て取り除くことができると思います。
動作確認
今回のコードをfunctions.phpに貼り付けることで、本文中の以下のコードが
<a href="https://nelog.jp/" target="_blank">寝ログ</a>
以下のようにtarget属性を取り除いたものに変更されます。
<a href="https://nelog.jp/">寝ログ</a>
まとめ
今回のコードを利用することで、Wordpressの投稿・固定ページ全ての本文中からtarget属性を取り除くことができると思います。
とりあえず「サイトからtarget属性を取り除きたい」と思ったときは、記事を一つ一つ修正するよりは、かなり手軽ではないかと思います。
そんなわけで「サイト全体をtarget属性なしに統一したい」とか「target属性ありとtarget属性なしのサイト上のパフォーマンスを計測したい」なんて場合には、手軽に試せる方法かと思います。