世界はまわると言うけれど

呼吸法、コーヒー、占いなど日々感じたことを綴っています。

wordpressのウィジェットでショートコードを使おうとした時に苦労したこと

wordpressのウィジェットでもphpのコードを書く方法はないかと探していた。googleで調べるとショートコードを使えるようにしたらできるよと書かれているページがあった。いろいろなページを見ていると下記コードをfunctions.phpに記述すればウィジェットでもショートコードを使えるよと書いている。

add_filter(‘widget_text’, ‘do_shortcode’);

そうすればできるのかと思って下記のように記述した。

add_filter(‘widget_text’, ‘mawaru’);
add_shortcode('mawaru', 'mawaru');

function mawaru() {
  // somthing
}

確かにショートコードの内容がテキストウィジェットに表示された。 表示されたけれど、テキストウィジェットを2つ追加すると両方のウィジェットにショートコードの内容が表示される! 片方のウィジェットにはショートコードすら記述していないのに!

wordpressか使っているテーマのバグなのかと思い調べてみても同じような現象に会っている人は見つからなかった。 add_filter とはどんなものなのか調べると書き方が間違っていた…。 do_shortcode の部分は使いたい関数を記述するのではなくそのまま書くこと。 元の動作を少しは理解していないとうまく使いこなせないですね。

do_shortcodeとか書かれていると使いたい関数を記述するのではと思うのは自分だけだろうか。

ちゃんと動く設定方法

正しく動作する記述方法はこちらです。

add_filter(‘widget_text’, ‘do_shortcode’);
add_shortcode('mawaru', 'mawaru');

function mawaru() {
  // somthing
}