WordPress 2.5 から機能追加されたショートコード。
[ショートコード名]のようにブラケットで囲った部分をタグに置換えてくれる。
XMLのように
[ショートコード名]HTMLタグや文字[/ショートコード名]
[ショートコード名 fruits=”みかん” price=”200″ /]
みたいに属性も指定できて便利。
今回、[sample /]という風にショートコード名に「sample」と名前をつけたコードを追加したが、imgタグのパスに/sample...
とsampleという文字が入っていて、ココも置換えてしまった。
てことは、ショートタグ名は投稿中に絶対現れないユニークな名前にしとかないとひどい目にあうってことになる。
またプラグインで使っているかもしれない名前を使うのもダメってことらしい。
どうもショートコード名は慎重に設定しないといけないようだ。
クラス名のようにユニークになるようにドメインでもくっ付けるのがよさそう。
もう一つ。
1つの投稿中に22個ショートコードを設置するとthe_content()
がエラーもなしに全く出力されなくなった。
自分で作ったコードが悪いのか?
ショートコードの仕様なのか?
サーバーが悪いのか?
一番疑わしいのは自分で作ったコードだけど、さっぱり理由がわからない。
投稿に同じ内容のショートコードを22個でダメ。
21個にすると出力される。
memory_limit, max_execution_time
あたりも触ってみたけど改善のきざし無し。
うーーん困った!
少しずつデバックしていくと22個目の属性が3個を超えると出力されないことまで分かった。
借りてるサーバーはログが見れない、どうしよう・・・
update
原因はプラグインAll in One SEO Packだった。
普段使わないのでうっかりしていた。
トラブルがあったらプラグインを停止してみる、を忘れていた。
もともとこのプラグインの印象は良くなかったけど今回の件で決定的。
仕様書に書いてあっても二度と使わないと心に誓う。
update
違ってた!
All in One SEO Packをオフにしても再現した。
ショートコードの中のコードと量(数)とサーバー環境が影響している様子。
ナニをしているのか?
ショートコードの数?
サーバーのメモリ?
まだ原因は未解明だけど、許容量を超えるとなにと吐き出さなくなってしまう。
エラーメッセージは出ず、他のテンプレートタグにも影響しない。
the_content()
だけが影響を被る…
う〜ん、気持ち悪い。