IT Rescue IT関連Tips情報

メールアドレスを隠しつつmailtoのリンクを記述する(メールアドレス暗号化):wordpress

2012年10月4日wordpress

wordpressの記事中にmailtoのリンクを隠し(暗号化)ながら記述する方法。※プラグインは使わない

  1. 以下のphpコードをfunctions.php に追加する。
    functions.phpに追加するphpコード
  2. 記事で [mail_obfuscate]ショートタグを使う。
    [mail_obfuscate email="webmaster@example.com"]メールはこちら[/mail_obfuscate]
    
  3. ショートコードがレンダリングされると以下のhtmlコード断片が出力される。
    <a id="mailto-fd36793783c3c9f452dc56abd25cfe3d">メールはこちら</a><script type="text/javascript">// <![CDATA[
     mailto_obfuscate('mailto-fd36793783c3c9f452dc56abd25cfe3d', '7kkJR1QKUiRy9kK', '.7QXuLH0Ok8SjhdysblAMETm4c@p5vV3qiNZzWKC9JUnwxYeI6faBtD2PFoG1rRg' );
    // ]]></script>
    
  4. htmlコード上にはemailアドレスは出力されないが、aタグ直後のjavascriptコードでaタグのhref属性がmailto:webmaster@example.com に設定される。
  5.  [mail_obfuscate]ショートコードのパラメータは以下の通り。
    • email   メールアドレスの指定(必須)
    • css_class aタグのclass属性を指定(オプション)
    • ショートコードのコンテンツはそのままaタグのコンテンツに使用される。<img>タグも記述可能
    • ショートコードのコンテンツが空の場合はemail属性の値が使用される。

* 2013/02/21 追記:functions.php に挿入するコードのバグを修正。メールアドレスに以下の文字列が含まれた場合の不具合を修正した。

!#$%&*+-/=?^_{|}~

1件のコメント

  1. 匿名 より:

    検索から来ました
    早速試してみようと子ページのfunctions.phpに書いてみたのですが最初のforループの部分の$nextchar = $inprogresskey{$ranpos};に対してUninitialized string offsetエラーが発生してしまいました。

    forループの$iの初期値を1にしてみたところエラーも消え何となく動いてるっぽいです(これで本当に大丈夫だろうか…)

コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。