「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
Movable Type用ShortCodeプラグイン・その8(ショートコードの入れ子)
ShortCodeプラグインでは、ショートコードの中にショートコードを入れ子に書くこともできます。
ただし、一部注意が必要です。
1.入れ子の例
冒頭で述べたように、ショートコードの中にショートコードを入れることができます。
例えば、以下のように書くと、「hoge」という変数が定義されているときだけ、ブログのアドレスを出力することができます。
[if name="hoge"] [template] <$mt:BlogURL$> [/template] [/if]
2.入れ子の許可/不許可
ショートコードによって、入れ子を許可した方が自然なものもあれば、逆に許可しない方が自然なものもあります。
そこで、ショートコードによって、入れ子の許可/不許可のデフォルト値は異なります。
現状のプラグインで標準装備しているショートコードでは、入れ子の許可/不許可は以下のようになっています。
ショートコード | 入れ子の許可・不許可 |
---|---|
template | 不許可 |
templatew | 不許可 |
block | 許可 |
table | 許可 |
if | 許可 |
unless | 許可 |
noconv | 不許可 |
template/templatewショートコードは、ブロック内にテンプレートタグを自由に書くことができ、極めて自由度が高いので、通常は入れ子を使う必要性はないと思います。
そのため、入れ子を不許可にしています。
また、noconvショートコードは、ブロック内のショートコードをすべて無効にしますので、当然ながら入れ子はあり得ません。
そのため、入れ子を不許可にしています。
3.同じショートコードの入れ子
同じショートコードを入れ子にする場合(例えば、ifショートコードの中にさらにifショートコードを書く場合)、入れ子の外と中のショートコードを区別するために、ショートコード名の後に「.識別子」を付ける必要があります。
識別子は半角英数字で自由に決めることができます。
例えば、ifショートコードを使って、「foo」と「bar」の2つの変数がともに真のときに、ショートコード内のブロックを出力したいとします。
外側/内側のifショートコードの識別子を、それぞれ「.1」「.2」にするとすれば、以下のような書き方をします。
[if.1 name="foo"] [if.2 name="bar"] 変数fooと変数barがともに真のときに出力する内容 [/if.2] [/if.1]
4.tableショートコードの入れ子
tableショートコードの中に、tableショートコードを入れ子に書くことも可能です。
ただし、その場合は入れ子の内側のtableショートコードに「no_cr="1"」のオプションを指定する必要があります。
例えば、以下のような表をtableショートコードで出力したいとします。
中央のセルが、入れ子になった表になっています。
1 | 2 | 3 | ||||
4 |
| 6 | ||||
7 | 8 | 9 |
上記の表は、以下のショートコードで出力することができます。
[table.1] 1,2,3 4,[table.2 no_cr="1"] a,b c,d [/table.2],6 7,8,9 [/table.1]