Post Snippetsでショートコードがそのまま表示されてしまう場合は?

コードスニペットの管理に便利な「Post Snippets」
電話番号やメールアドレスなど、複数のページで同じテキストを使う場合に重宝しますよね。
内容に変更があった時にも、管理画面からスニペットを編集すればいいのでとても便利です。

表示させたい場所にショートコードを書くだけでとても簡単なのですが、スニペットの中身が未入力だと、ショートコードがそのまま出力されてしまうんですね。
これを逆手にとって、「変なショートコードが出てたら入力漏れがあるぞ」という風に確認に使えるし、それはそれで良いかなぁと思ったりもするのですが、それじゃマズイ場合もあります。

入力があったら表示する、未入力なら何も表示しない、そういう潔い感じがいい!
そういうときの為の、ザックリとした対処法です。

スニペットを登録

“hoge” という名前で登録した場合…

$hogehoge = do_shortcode('[hoge]');
if ($hogehoge == "[hoge]") {
  echo "";
} else {
  echo $hogehoge;
}

ショートコードの代わりに、このコードを書いてみてください(hoge は適宜書き換えてくださいね)。これで、hoge が未入力なら何も表示されなくなります。

最初、empty が思い浮かびましたが、空じゃなくてショートコード(と同じ文字列?)が入ってるんですよね…。
そして、潔くしたいのが1コだけならコレで良いかも知れませんが、全部潔くしたい場合はfunction.php とかで正規表現とか使ってフィルターする感じになるんでしょうかね…。

トラックバックURL