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]歳。
と書けば、年齢が出力されるようになりました。
ほらできた!
色々と応用出来るテクニックですね。


