ショートコードでは条件分岐が使えない?

ワードプレス

よく使う処理をショートコードで使えたら便利じゃないか?と思いつき、「最新のお知らせ」みたいなループ処理ファイルをショートコードに登録。

ループ自体は正常に出力されるけど、「アイキャッチがあれば表示、無ければデフォルト画像を表示する」みたいな条件分岐はスルーされる。

このファイルを「get_template_part」で呼び出した場合ば正常に条件分岐される。

 

どうもこれがショートコードの仕様らしい。

これをどうにかしちゃう関数の記述例などは沢山見つかるけれど、「なぜこうなっているのか」は分からなかった。

「ショートコードを使う」 = 「記事内でPHPを動かす」なので、セキュリティ上の理由からこうなっている、のかな。

 

MW WP Formとか、複雑なプログラムをショートコードで呼び出すプラグインは多いけれど、あれらはどうなってるんだろうか?

 

とりあえず、「どうしてもショートコードで!」というわけじゃないので、素直に受け入れることに。

・ショートコードは、条件分岐などの無いシンプルな形で使う。

・クライアント様が容易に書き換えられる場所に記述するんだから、間違えて書いても消されちゃっても大きな影響がない程度に。

こんな風に使おうと思いました。