こんにちは。WEBエンジニアの端くれの遊人です。
kojikojiさんの『スマートフォン全盛の時代に考える「target=’_blank’」の意味』という記事に共感したので、コメントを書いてみました。
そうしたらなんと、kojikojiさんが、WordPressのスマートフォン画面で「target=’_blank’」を取り除く関数を作ってくれました!
せっかく作ってくれたので、自分のサイトに合うように改良して使ってみました。
target=’_blank’とは?
target=’_blank’は、ページ内のリンクに記述してあるとリンクが新しいウィンドウや新しいタブで開きます。
リンクに
「target=’_blank’」有り → リンク先が新しいウィンドウや新しいタブで開く
「target=’_blank’」無し → 現在のウィンドウやタブがリンク先に切り替わる
というようにリンク先を開く動作が異なります。
きっかけ
kojikojiさんの記事にコメントしたきっかけは以下の記述でした。
今のところ、一番の解決策は、PC用のページとスマートフォン用ページで、<a>タグの属性の指定を切り替えられればベストだと思います。PC用のページでは、従来通り「target=’_blank’」属性を指定し、スマートフォン側のページでは「target=’_blank’」を消すようなプラグイン、誰か考えてくれないでしょうか?
今のところは、そんなに需要のないプラグインなので、考えてくれる人は少なそうです。だったら、「自分で作れよ」とお叱りの声が来そうなのですが…WordPressのプラグインは作った経験がないのです(涙)勉強しておきます!!
これに対して私は記事に以下のコメントを書いたのです。
WordPress「target=’_blank’」切替プラグインの開発頑張って下さい!
首を長くして待ってます!
本当に開発してくれた!
コメントを書いた次の日にkojikojiさんのブログに『WordPressのスマートフォン画面で「target=’_blank’」を取り除く関数を作ってみた』という記事がアップされました。
すぐに作って公開してしまうとは、驚くべき行動力です。
さらに記事には、
サクッと1時間くらいで作ったので、何か問題があるかもしれません。何かあったら、すぐに使用を中止してください。
という記述が。
デキるエンジニアは違う
実際のプログラムコードを見るとWordPressの仕組みを理解すれば簡単な関数かもしれません。
しかし、すぐに作り始めてサクッと完成させてしまう行動力が、デキるエンジニア(kojikojiさん)とデキないエンジニア(私)の差なのだと思います。
そもそも私なんてWEBエンジニアなのにWEB系の記事は今回が初投稿という意識の低さです。
今後は、WEB系の記事も書いてkojikojiさんのようなデキるエンジニアを目指して頑張りたいと思う次第です。
ありがたく活用
kojikojiさんは、「target=”_blank”」を削除することによってGoogle AdSenseに影響が出るのを恐れて「target=’_blank’」のみを削除する関数を作ってくれました。
しかし、私のサイトのソースを見るとリンクは「target=’_blank’」ではなく「target=”_blank”」になっています。
使用しているエディタやプラグインによってシングルコーテーションになるかダブルコーテーションになるか変わるのかもしれません。(こういう部分をちゃんと調べないのでデキないエンジニアなんです)
すべての記事内にある「target=”_blank”」をシングルコーテーションに変えるのは面倒です。
また、私は記事本文中にGoogle AdSenseを設置していないので、kojikojiさんの懸念するGoogle AdSenseへの影響はありません。
なのでkojikojiさんの関数は「target=’_blank’」だけを削除してますが、「target=”_blank”」も削除するように改良しました。
ベースを作るのは面倒なんですが、改良するのはけっこう好きなんですよね。笑
改良版が以下です。
//スマートフォンでtarget='_blank'とtarget="_blank"を除去する function remove_smt_target_blank($content) { if (wp_is_mobile()) { $search = array("target='_blank'", 'target="_blank"'); return str_replace($search, '', $content); } else { return $content; } } add_filter('the_content', 'remove_smt_target_blank');
4行目を追記して5行目を修正しました。
また、3行目のis_mobile()関数は、kojikojiさんが独自に追加した関数で私のwordpressにはないので、wordpress標準のwp_is_mobile関数に変えました。
wordpress標準のwp_is_mobile関数は、PCとスマートフォン+タブレットを判別しています。
kojikojiさんのis_mobile()関数は、PC+タブレットとスマートフォンという判別をしているのではないかと予想。
改良したコードをテーマ内のfunctions.phpに追記しました。
iphone5sでテストして正常に動作しました。
使用は自己責任でお願いします。
スポンサーリンク