何かとTwitterでも話題になっている「target=”_blank”」
アフィリエイト界隈でtarget="_blank"問題なんてのが起きてるらしい(今気づいた🤔)
noopenerが付いていないとリンクに飛ばなかったりすると。これじゃ成果発生しない、、
帰宅したら念のため全サイトチェックしよう。 https://t.co/oxIcAoqzVP— おーとかぶ (@autokabu) August 10, 2019
target="_blank"問題について
分かりやすく、良くまとまった記事を発見したので共有します。https://t.co/lwUSiUlMyz
※Isamuさん@webwork_6ASPによってもtarget="_blank"を削除して良いところ、ダメなところがあるので要注意です。https://t.co/3K3jhUIc5S
※北野さん@KeitaroKitano— みっちー@仕組み化プロデューサー (@webculture_s) August 9, 2019
target=”_blank”
rel=”noopener noreferrer”
rel=”noopener”全部消した('ω')
— 菊地 英明 (@kiku1227) August 11, 2019
わいひらさんが書かれている下の記事を参考に対処しました。
target=_blankリンク問題対策のサンプルコードです。
「記事本文」のみならず「WordPressページ」にあるすべてのリンクからtarget=_blankを削除するカスタマイズ方法です。WordPressページ全体からtarget=_blankを削除するカスタマイズ方法【リンクが開けない問題対策】 https://t.co/lkl6fp3Vd0
— わいひら@寝ログ (@MrYhira) August 10, 2019
やり方は簡単で、function.phpに追記するだけでページ全体(本文を含め、ウィジェットやヘッダフッタ内全て)からtarget=”_blank”を消す事ができます。
わいひらさんの記事内のソースは下記
add_action(‘get_header’, function () {
ob_start(‘remove_target_blank_call_back’);
}, 9999);
//最終HTML取得終了
add_action(‘shutdown’,function () {
if (ob_get_length()){
ob_end_flush();
}
});
function remove_target_blank_call_back($html) {
$html = str_replace(‘ target=”_blank”‘, ”, $html);
// //以下は必要なものだけコメントを外してください
// //シングルコーテーションのtarget=_blank
// $html = str_replace(” target=’_blank'”, ”, $html);
// //noopener
// $html = str_replace(‘ rel=”noopener”‘, ”, $html);
// //noreferrer
// $html = str_replace(‘ rel=”noreferrer”‘, ”, $html);
// //noopener noreferrer
// $html = str_replace(‘ rel=”noopener”‘, ”, $html);
// //他にも必要な処理があれば、以下に置換処理を追加していってください
return $html;
}
なんですが、str_replaceのところをいろんなパターンを追加しました。追加した理由は過去の記載にrel=”xxxxx”がいい加減なものがあるのでは?と考えたからです。順番がバラバラとかね。
で、追記載したものがこちら
/*★ページ全体からtarget=”_blank”やrel=”xxxxx”を取り除く方法*/
//最終HTML取得開始
add_action(‘get_header’, function () {
ob_start(‘remove_target_blank_call_back’);
}, 9999);
//最終HTML取得終了
add_action(‘shutdown’,function () {
if (ob_get_length()){
ob_end_flush();
}
});
function remove_target_blank_call_back($html) {
$html = str_replace(‘ target=”_blank”‘, ”, $html);
$html = str_replace(‘ target=”_self”‘, ”, $html);
// //以下は必要なものだけコメントを外してください
// //シングルコーテーションのtarget=_blank
$html = str_replace(” target=’_blank'”, ”, $html);
$html = str_replace(” target=’_self'”, ”, $html);
$html = str_replace(‘ rel=”noopener”‘, ”, $html);
$html = str_replace(‘ rel=”noreferrer”‘, ”, $html);
$html = str_replace(‘ rel=”noopener noreferrer”‘, ”, $html);
$html = str_replace(‘ rel=”noreferrer noopener”‘, ”, $html);
$html = str_replace(‘ rel=”nofollow noopener noreferrer”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”nofollow noreferrer noopener”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”noopener noreferrer nofollow”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”noopener nofollow noreferrer”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”noreferrer nofollow noopener”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”noreferrer noopener nofollow”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”nofollow noopener”‘, ‘ rel=”nofollow”‘, $html);
$html = str_replace(‘ rel=”noopener nofollow”‘, ‘ rel=”nofollow”‘, $html);
// //他にも必要な処理があれば、以下に置換処理を追加していってください
return $html;
}
下記はヤフーへのリンクをテストしたものです。
- ヤフー(何もなし)
- ヤフー(target=”_blank”のみ)
- ヤフー(target=”_blank” rel=”noopener”)
- ヤフー(target=”_blank” rel=”noreferrer”)
- ヤフー(target=”_blank” rel=”noopener noreferrer”)
- ヤフー(target=”_blank” rel=”noreferrer noopener”)
- ヤフー(target=”_blank” rel=”nofollow noopener noreferrer”)
- ヤフー(target=”_blank” rel=”nofollow noreferrer noopener”)
- ヤフー(target=”_blank” rel=”noopener noreferrer nofollow”)
- ヤフー(target=”_blank” rel=”noopener nofollow noreferrer”)
- ヤフー(target=”_blank” rel=”noreferrer nofollow noopener”)
- ヤフー(target=”_blank” rel=”noreferrer noopener nofollow”)
- ヤフー(target=”_blank” rel=”nofollow noopener”)
- ヤフー(target=”_blank” rel=”noopener nofollow”)
- ヤフー(target=”_self”あり)
htmlソースを見るとちゃんと外れてます。
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(何もなし)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank”のみ)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noopener”)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noreferrer”)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noopener noreferrer”)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noreferrer noopener”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”nofollow noopener noreferrer”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”nofollow noreferrer noopener”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noopener noreferrer nofollow”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noopener nofollow noreferrer”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noreferrer nofollow noopener”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noreferrer noopener nofollow”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”nofollow noopener”)</a></li>
<li><a rel=”nofollow” href=”https://www.yahoo.co.jp/”>ヤフー(target=”_blank” rel=”noopener nofollow”)</a></li>
<li><a href=”https://www.yahoo.co.jp/”>ヤフー(target=”_self”あり)</a></li>
</ul>
※一部の文字がエンコードされていたので見やすいように整形しています
しばらくはこれ様子見です。何か不具合があったらその時に考えよう(笑)
ネットには有益な情報が転がってますね、ありがたいことです。
コメント