フリースペース

日常のニュースを思うままに発信します。

*

WordPressのスマートフォン画面で「target=’_blank’」を取り除く関数を作ってみた

   

いや、ホント軽い気持ちで書いた記事だったんですけど、コメントまでいただいてしまったものですから、作ってみようかなと思いました。

関数の機能は、いたってシンプルです。スマートフォンの本文中から「target=’_blank’」だけを除去する関数です。「target=”_blank”」だと除去しません。シングルクウォーテーションがダブルクウォーテーションになっただけですが、Google様のAdSenseが「target=”_blank”」を使用していて、これを除去してしまうとGoogle様の怒りを買うことになるので、「target=’_blank’」だけを除去する仕様になっています。本文中のリンクに「target=’_blank’」を指定すると、PC画面では別ウィンドウか別タブで立ち上がりますが、スマートフォンのブラウザでは画面遷移します。これで、スマートフォンで沢山、画面が立ち上がる問題を解決することができるのです。

スポンサードリンク

スマートフォンでの「target=’_blank’」問題

このブログにも、多くの人がスマートフォンからアクセスしてくれています。そのため、リンクの度に「target=’_blank’」を指定していると、スマートフォンのブラウザに大量の新規画面が立ち上がりメモリを喰ってしまうのではないかと考えたことが発端です。

ネットで調べてみたら、同じように考えている人が何人もいたので、見当違いじゃないと、ひと安心していました。

ただ、その記事にコメントが付いたのです。

WordPress「target=’_blank’」切替プラグインの開発頑張って下さい!
首を長くして待ってます!

そこまで言われたら、一応、フリーランスのWEBエンジニアですから、やらない訳にはいきません。この業界、言い出しっぺがやる羽目になることが多いんですよね…

WordPressのプラグインなんか作ったことない

今まで、Wordpressのカスタマイズの仕事はありましたが、予算の関係とバージョンアップした時の動作保証ができないことから、プラグインを作った経験はありませんでした。まずは、プラグインづくりのイロハを学びます。

どうやら、Wordpressで言うプラグインは、関数の集合体のようです。そうであれば、そんなに難しいことでもないので、functions.phpに直接書くことに決定しました。ここまで、わずか30分。

PHPは得意です

PHPは、何だかんだと叩かれている言語ですけど、フリーランスの身にはありがたい言語なんです。誰かが作って逃げた滅茶苦茶なアプリを丁寧に解読し、保守運用を請負ったり、Wordpressのようなオープンソースのカスタマイズを依頼されたり、もうPHP様々なのです。だからと言って、好きかと言われれば、好きではありません。好きな言語はRubyとPythonです。PHPはお金のためと割り切っています。

とは言っても、もうPHP歴10年近くになるので、バカに出来ませんよね…キライだキライだと言っていても、実はってヤツではありません。本当に、PHPはちょっと色々とストレスが溜まる言語なので、なるべく関わらないように生きて行きたいと思っています。

functions.phpに追記

以下の関数を、functions.phpに追記すれば、動作します。

どんな動作をするのかと言えば、非常にシンプルで、スマートフォン画面で「target=’_blank’」を削除してくれるだけです。<a>タグで指定したリンクが、スマートフォン画面では別画面が立ち上がらず、直リンクになるということです。PC画面は、別ウィンドウか別タブになります。

動作環境

そのため、久しぶりに自分用のPHPを書くので、ちょっと新鮮でした。コードを書いてテストをして、問題ないことを確認してから皆様にご報告の記事を書いています。

動作確認はPC版Google Chromeのユーザーエージェントを書き換える拡張機能で、android版とiOS版のチェックはしています。android版では、実機にGoogle Chromeを入れて動作確認もしています。iOS版は、奥さんのiPhoneでsafariでの動作確認をしています。それ以外の怪しいブラウザまではチェックしていないので、対象外とさせてください。

感想

サクッと1時間くらいで作ったので、何か問題があるかもしれません。何かあったら、すぐに使用を中止してください。

Google様のAdSenseの方には影響しないように「target=’_blank’」だけを除去するようにしています。ただAdSenseの広告全てを調べた訳ではないので、断言はできません。もしGoogle様から警告が来たら、速やかに使用を停止しましょう。

その他の問題に関してはTwitterとかで話しかけてもらえれば、わかる範囲でお答えします。

 - Wordpress

        

広告

広告

  フォロー、いいねをお願いします

follow us in feedly

Comment

  1. 遊人 より:

    さっそくの作成ありがとうございます!
    さすが仕事が早いですね~!
    AdSenseが「target=”_blank”」を使用というのは、テキストリンクの場合でしょうか?
    バナー系だとコードはJSなのでダブルコーテーションのtarget=”_blank”を除去しても大丈夫な気がしてます。
    私はWordpressのビジュアルエディタでリンク作成しており、target=”_blank”はダブルコーテーションなので、使う場合は4行目を書き換えてダブルコーテーションのtarget=”_blank”を削除するコードでAdSenseが問題ないかテストしてみたいと思います。

    • kojikoji より:

      コメントありがとうございます^^
      AdSenseはテキストリンクでもバナーの場合でも「target=”_blank”」になっていると思います。
      AdSenseのコードを改変することは、ちょっと危険な気がしますので、「target=”_blank”」は、除去しない方が良いように思います。
      Google社からの警告には、くれぐれもご注意ください!

  2. […] そうしたらなんと、kojikojiさんが、WordPressのスマートフォン画面で「target=’_blank’」を取り除く関数を作ってくれました! […]

  3. 遊人 より:

    ちょっと改良して使ってみました。
    http://value-labo.net/archives/574
    AdSenseですが、私のブログはそもそも本文中にAdSenseを設置していませんでした。(笑)

    ただ、今後は記事内に設置するかもしれないので、記事内に設置した状態で$contentの中身をログに出力して確認しました。
    記事内に追加した以下のAdSenseのJsコードが、$content内にそのまま入っていました。

    $content内のコード

    $content内のAdSenseコードに「target=”_blank”」が無いのでkojikojiさんの作った関数はAdSenseには影響なさそうです。
    逆に「target=”_blank”」が入っているAdSenseコードを記事内に設置して関数を使ったら、Google様に怒られそうです。

    • kojikoji より:

      詳細な説明、ありがとうございます^^
      記事も読ませていただきました!
      大変、嬉しく思います。

      is_mobile()関数は、私の使用しているテーマのStinger5で実装されている関数でした><
      正しくは、wp_is_mobile()ですね!
      ツメの甘さが出てしまいました…

遊人 にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

By: Serge Kij
デザインも機能も秀逸。WordPressの有料テーマとGPLライセンスの関係

先日、同期ブログで親しくなった、しむ(コトバコ)さんと、以前からTwitterで …

By: Rob Davies
深刻な脆弱性が相次いで発見!WordPressはダメなプロダクツなのか?

ここ数日のうちに、「Wordpressに深刻な脆弱性を発見」というニュースを何度 …

By: Akira Ohgaki
STINGER5でアドセンスの位置を大幅に修正。クリック数が格段にアップする方法

私のブログは、スマートフォンからのアクセスが、デスクトップからのアクセスの倍以上 …