WordPressを使っていると、ウィジェットの中でも何か動的な処理をしたくなるケースが割りとよく出てきます。
そんなとき、『PHP Widget』などのプラグインを利用して、テキストウィジェットの代わりに、PHPが実行できるウィジェットを使うのもひとつの手です。
でも、それよりその処理をfunctions.phpに書いて、ショートコードで呼び出したほうがセキュリティ的にも安心ですし、運用も手軽で応用が利きますよ!
ショートコードなら、例えばContact Form7でミニフォームをサイドバーに設置したりもできます。
では、テキストウィジェットの中でショートコードを利用する方法は?
これが意外と簡単なんです。
WordPress関数で「do_shortcode」というものが用意されているので、フィルター「widget_text」にそれを引っ掛けるだけです。
具体的には、これをfunctions.phpのどこかに書けばOK。
// テキストウィジェットでショートコードを使用する add_filter('widget_text', 'do_shortcode');
具体例
それでは実際の使用例を紹介します。
このサイトではサイドバーにプロフィールを表示していますが、そこで年齢を表示してみましょう。
まず、年齢を出力する関数を定義し、それをショートコードに登録します。
/* 年齢を計算する */ function return_myage(){ $now = date('Ymd'); $birthday = "19771201"; return floor(($now-$birthday)/10000); } add_shortcode('age', 'return_myage');
↑これで、[age]で年齢が表示されるようになりました。
先ほどの
// テキストウィジェットでショートコードを使用する add_filter('widget_text', 'do_shortcode');
も忘れずに挿入しておきます。
これでテキストウィジェットで
1977年生まれ。[age]歳。
と書けば、年齢が出力されるようになりました。
ほらできた!
色々と応用出来るテクニックですね。