このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

antispambot()、get_permalink()をショートコードで。

メールアドレスをスパムボットに収集されにくくするためのantispambot()関数を、投稿orページ内で使用するにあたり、従来はrunPHPExecPHPを使用してきたけれど、それを「ショートコード」に置き換え。

以下の関数をwp-content/themes/使用中のテーマ/funcitions.php 内に挿入。
【追記】もし下記を追加後にビジュアルエディタが使えなくなったとしたら、functions.phpを編集した時にUTF-8以外の文字コードで編集した可能性があります。その場合は、UTF-8に適用しなおして、挿入したコードの前後の改行などもいったん削除すると直ります。 

<?php
function antispambot_short($atts) {
        extract(shortcode_atts(array(
                ’mail’ => ”,
                ’text’ => ‘クリックしてメーラーを起動’,                
        ), $atts));
        $mail = antispambot($mail);
return ’<a href=”mailto:’ .$mail . ‘”>’ .$text .’</a>’;
}
add_shortcode(‘antispambot’, ‘antispambot_short’);
?> 

あとは、投稿orページの本文で挿入したい部分に

[antispambot mail="xxx@example.com" text="お問い合わせはこちら"]

のように記述すればOK。 

企業サイトをWordPressで制作する場合、会社概要などにメールアドレスを記述することがあると思う。その時に、スパムボット対策でantispambot()でメールアドレスをHTMLエンティティ化するには、投稿orページ本文の中なので、上記プラグインを使用して本文内でPHPを実行すれば実現できる。が、これらのPHP実行プラグインはビジュアルエディタとバッティングするので、もしクライアントサイドでビジュアルエディタで編集するとPHPのコードが壊れて機能しなくなってしまう。

これをショートコード化すれば、(クライアントがその部分の記述を触らない限り)antispambotは使えるようになります。

メリークリスマス☆

【追記】

今更ながらにショートコードって便利><っと、調子にのって、サイト内リンクを簡単にするために、get_permalink(記事ID)を使えるようにしてみました。

<?php
        function get_permalink_short($atts) {
                extract(shortcode_atts(array( //ショートコード内に指定された属性を取り出す
                        ’id’ => ”, //未指定の場合の初期値
                        ’text’ => ”, //同上
                        ’title’ => ”, //同上
                        ’target’ => ”, //同上
                ),$atts));
                $link = get_permalink($id); //指定された記事IDから、get_permalink()によってリンクURLを取得
                if($text == ”)
                        $text = $link; //リンクテキストが指定されない場合はURLを出力
                if($title !=”)
                        $title = ‘ title=”‘ .$title .’”‘; //title属性が指定されている場合は書式をつくる
                if($target !=”)
                        $target = ‘ target=”‘ .$target .’”‘; //target属性が指定されている場合は書式をつくる
                return ‘<a href=”‘ . $link . ‘”‘ . $title . $target . ‘>’ . $text .’</a>’; //リンク書式全体を結合して返す      

        }

        add_shortcode(‘link’,'get_permalink_short’); //linkというショートコードが指定されたら上記のget_permalink_short関数を実行する
 

?>

投稿ページでは

[link id="1"]

と書くだけで、サイト内の記事ID=1の記事へのリンクを挿入できます。
http://example.com/archives/1/

[link id="1" text="こちらをご覧ください" title="ショートコードのレシピ♪" target="_blank"]

と書くと 
こちらをご覧ください
とすることもできます。  

パーマリンク構造やスラッグを変えてもリンクエラーになりません。でもビジュアルエディタ使ってる時は別ウィンドウからリンクテキストをドラッグ&ドロップするだけでリンク貼れるので、手間を省く意味はあまりないかもですw

こんな具合で慣れてしまえば仕組みは一緒なので、投稿ページ内で使いたい関数があったらぜひ自作ショートコード作成にチャレンジしてみては?プラグインづくりのトレーニングにもなるかも。 

参考ページ)
ショートコードAPI  WordPress Codex 日本語

このエントリーをはてなブックマークに追加

5件のコメントがありますコメントのRSSフィード

  1. [...] うなんですが、簡単に使う方法が見つかりました。 [...]

  2. egoblock より:

    はじめまして。
    投稿内で、サイト内の別投稿へのパーマリンクを、リンク切れを起こすことなく設置するにはどうすれば良いかと考えておりました。ショートコードがあると思い、検索したらここにたどり着きました。参考に自作してみたいと思います。

  3. [...] ートコードを使えばいいんじゃね?と思いついた。 既に同じことを考えて、しかも作っている方がいらっしゃった。 http://wpcms.jp/374/ カテゴリー: その他   パーマリンク ← test [...]

  4. [...] 参考にさせて頂いたサイト antispambot()、get_permalink()をショートコードで。 [...]

コメント/質問お待ちしています

トラックバックURL:
http://wpcms.jp/374/trackback/

CATEGORY

ARCHIVE

2017年11月
« 12月    
 1234
567891011
12131415161718
19202122232425
2627282930