「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
エントリーにXMLでデータを埋め込むプラグイン(その4)
エントリーにXMLでデータを埋め込むプラグインでは、配列形式のデータを扱うこともできますが、それと要素の階層化を組み合わせると、さらに活用の幅が広がります。
例えば、エントリーごとに複数枚の画像を入れる際に、画像のURLやサイズなどの情報をXML化しておくことで、レイアウトをテンプレートで自動的に行う、といったことができます。
1.XMLの例
配列と要素の階層化を組み合わせた例として、最初にあげた「画像の情報」を考えてみることにしましょう。
画像の情報としては、URL/縦横のサイズ/画像の説明などがあります。
そこで、画像1枚分の情報を「image」という名前の要素にし、その下の階層に「url」「width」「height」「alt」などの要素を入れて、image要素を配列化します。
実際にXMLを書くと、以下のような感じになります。
<!-- <XMLRecord> <image> <url>foo.jpg</url> <width>640</width> <height>480</height> <alt>○○の画像</alt> </image> <image> <url>bar.jpg</url> <width>640</width> <height>480</height> <alt>□□の画像</alt> </image> </XMLRecord> -->
2.データを取り出す
次に、上のようなXMLを元に、画像の情報を取り出してレイアウトするように、テンプレートタグを組みます。
例えば、以下のようにタグを組むと良いでしょう、
<MTEntryIfXML> <MTEntryXML> <MTEntryXMLIfFields name="image"> <p> <MTEntryXMLFields name="image"> <img src="<$MTEntryXMLValue name="url"$>" width="<$MTEntryXMLValue name="width"$>" height="<$MTEntryXMLValue name="height"$>" alt="<$MTEntryXMLValue name="alt"$>" /><br /> </MTEntryXMLFields> </p> </MTEntryXMLIfFields> </MTEntryXML> </MTEntryIfXML>
また、このようにテンプレートを組んだ場合、1.のようにエントリーにデータが保存されていると、再構築の結果は以下のようになります。
<p> <img src="foo.jpg" width="640" height="480" alt="○○の画像" /><br /> <img src="bar.jpg" width="640" height="480" alt="□□の画像" /><br /> </p>
この例では画像を単に縦に並べているだけですが、テンプレートタグの組み方を変えれば、画像のレイアウト方法を変えることもできます。