情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

WordPress:外部サイトへのリンクにだけ「target="_blank"」を付けて内部リンクの「target="_blank"」は外す方法メモ

HTML (15) PHP (25) WordPress (76)

今回は、投稿本文中のリンクタグ(aタグ)にある「target=_blank」要素を、「外部サイトへのリンクには付ける」かつ「内部ページへのリンクには付けない」を強制的に適用する方法をメモします。

外部サイトへのリンクに『だけ』 target=_blank を付加したい!

外部サイトへのリンクに「target=_blank」を付けてくれるプラグインは複数あります。ただ、これは「target=_blank」を一切使っていない人向けであり、すでに中途半端に「target=_blank」を付けていたりすると、「外部サイト『のみ』target=_blankを付ける」という点について一貫性がなくなってしまいます

そこで、今回は、「functions.phpでtarget=_blankをすべて削除」して、「プラグインで、外部リンクにのみtarget=_blankを追加する」という方針でやってみました。その結果、現状中途半端に「target=_blank」が混ざっていてもうまくいくようになりました。

1.「target="_blank"」をすべて削除する

WordPressの「外観>テーマ編集」から、「functions.php」を開いて、次のPHPのコードを追加します。

// target="_blank" の削除
function remove_target_blank($content) {
	return str_replace(' target ="_blank"', '', $content);
}
add_filter('the_content', 'remove_target_blank');

これで、「 target ="_blank"」という文字列を一括削除してしまうわけです(※こういう本文中でも削除されてしまうので、今回はわざとイコール直前に半角スペースを挿入しています)。

2.「target="_blank"」を外部サイトへのリンクにのみ追加する

今回使用したプラグインは、「WP External Links」です。「プラグイン>新規追加」から検索すれば、簡単にインストールできます。

「Open external links in...」を「New window or tab」と設定すると、外部リンクに対して「target="_blank"」が、設定されます。

また今回は、投稿本文についてのみ有効になって欲しかったので、「Apply plugin settings on...」で「Post contents」を選択しました。ついでに外部サイトへのリンクにのみアイコンを表示したかったので、「Style Settings>Set icon for external link」でアイコンを選択しました。ちなみに、画像付きのリンクにアイコンを表示させないために「No icon for external links with images」にもチェックを入れています。

完成

若干謎な部分もあるのですが、ひとまずうまくtarget="_blank"が追加・削除されていることを確認できたので、現在このブログでは、この方法でtarget="_blank"をコントロールしています。中途半端に手作業でtarget="_blank"を設定してしまった、というひとは是非お試しあれ。

参考

コメント(0)

新しいコメントを投稿