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