【WordPress】ページ全体のtarget=”_blank” の問題を解決 function.phpに追記載するだけ【ただし自己責任で】

【WordPress】ページ全体のtarget=”_blank” 問題を解決

【WordPress】ページ全体のtarget=”_blank” 問題を解決

何かとTwitterでも話題になっている「target=”_blank”」

わいひらさんが書かれている下の記事を参考に対処しました。

WordPressページ全体からtarget=_blankを削除するカスタマイズ方法【リンクが開けない問題対策】
2019年8月初旬頃から一部ブラウザやアプリにおいて「target=”_blank”が…

やり方は簡単で、function.phpに追記するだけでページ全体(本文を含め、ウィジェットやヘッダフッタ内全て)からtarget=”_blank”を消す事ができます。

わいひらさんの記事内のソースは下記

//最終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);

// //以下は必要なものだけコメントを外してください
// //シングルコーテーションの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;
}

下記はヤフーへのリンクをテストしたものです。

htmlソースを見るとちゃんと外れてます。

<ul>
<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>

※一部の文字がエンコードされていたので見やすいように整形しています

しばらくはこれ様子見です。何か不具合があったらその時に考えよう(笑)

ネットには有益な情報が転がってますね、ありがたいことです。

なお、当サイトに記載している置換処理をコピペすると、シングルクオーテーション(‘)やダブルクオーテーション(“)が全角になっていると思うので、そのままでは使えません。必ずテキストエディタなどで、半角に置換してからご使用ください。
なお、当然ですが自己責任でお願いします。

コメント

タイトルとURLをコピーしました