WordPressでdo shortcodeしたらうまくパラメータの値が渡せなかった

WordPressのカスタマイズをする際、ショートコードのプラグインを作っておくと、テーマのリニューアルやメンテナンスがやりやすいので、最近ではこの方法でやっています。

で、どうしてもテーマファイルの中でショートコードを実行する必要があり do_shotocodeを利用して実装したものの、うまくいかずにハマってしまったことが合ったのでメモ。

目次

シングルクォートとダブルクォートの使い分け

問題はパラメータで渡す値を変数にしていたのですが、その変数に”hoge fuge”と間に半角スペースがはいっていると、最初のhogeしか値が渡らなかったことでした。

当初は、

echo do_shortcode('[show_product name=$productname productcat=$productcat]');

とやっていたのですが、これだと”hoge fuga”が”hoge”となってしまいました。

結果的には下記のようにすることでうまくいきました。

echo do_shortcode("[show_product name='$productname' productcat='$productcat']");

まとめ

変数を変数として渡す方法や、シングルクォートとダブルクォートの違いなど、まだまだその都度ググりながらやっているので失敗しましたが、今回の経験で次回からはもうちょっと早く問題の原因を発見&解決できそうです。