知らないと困る、「ショートコードを働かせない」方法

7月 12, 2015

≪≪この記事をすべて読むには約 4 分かかります≫≫

WordPressを使い始めて間もなかったので、ショートコードの恐ろしさに気づいていませんでした。ふと、先ほど投稿したショートコードでPHPを実行する記事を見てみたらなんだか怪しいエラーが出ていました。PHPが吐き出すエラーに見られたくない情報が入ってくることは良くありますから、早く気づいて良かったです。

ショートコード

ショートコードというのは、半角のカッコ"[ ]"で囲まれたコードのことで、テーマやプラグインで割り当てた機能を呼び出すために使われます。

以前書いたFont Awesomeの記事中でも、

[icon name="youtube" class="" unprefixed_class=""]
[icon name="twitter" class="" unprefixed_class=""]
[icon name="reddit" class="" unprefixed_class=""]

というように使っていたのですが、見えるとおりのまま記載すると、



このように変換されてしまっていました。

itai_shippai

記事に書かれていれば機能する

記事中にショートコードが存在していれば、他のスタイルシートや、整形プラグインよりも優先されて効果がでます。

先のコードの場合には、


となるはずのコードを、コード表示用のプラグインでコードが見えるようにしていたのですが、それを無視してショートコードが実行されていました。

Font AwesomeのプラグインではHTMLに変換するだけだったのですが、前の記事のように、実行される関数内でPHPが実行された場合にはエラーが出て表示が壊れたり、いろいろ悪さをします。

ショートコードを抑制する

記事内に半角カッコ"["が出てくるだけでショートコードが実行されてしまうのは、結構問題です。実行されないようにエスケープする必要があります。

エスケープするには、

[icon ショートコード]

となっているところを

[[[icon ショートコード]]]

というようにカッコを二重に記載するだけです。

記事を書いているときにはショートコードは実行されないので気づきませんでした。厄介なことにカッコ内に定義済みのショートコードがある場合だけ実行されるようです。これは、失敗してみないと気づかないかもしれませんね。

早く気づいてよかったです。