「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
SearchContentsプラグイン(その15・検索フォームと検索結果出力テンプレートの例)
SearchContentsプラグインで、検索フォームを使って検索結果を出力する例を紹介します。
1.取り上げる例
「商品」というコンテンツタイプがあり、「商品名」というテキスト型のフィールドと、「単価」という数値型のフィールドがあるものとします。
この状況で、「商品名に○○を含み、単価が△△円以上□□円未満」という条件で検索するようなフォームを作るとします。
また、検索結果は単価の安い順に並べ替えるとします。
2.検索フォーム
検索フォームを表示するページのテンプレートに、以下のような部分を追加します。
3つのinput要素を使って、商品名/価格の下限/上限の条件を入力できるようにしています。
なお、3行目の「テンプレート名」のところは、実際の検索結果表示テンプレートモジュールの名前に置き換えます。
<form method="get" action="<$mt:RealtimeRebuildCGIPath$>"> <input type="hidden" name="blog_id" value="<$mt:BlogID$>" /> <input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="テンプレート名"$>" /> <input type="hidden" name="first_time" value="1" /> <p> <label for="item_name">商品名</label> <input type="text" id="item_name" name="item_name" /> </p> <p> <label for="min">価格の下限</label> <input type="text" id="min" name="min" /> <label for="min">上限</label> <input type="text" id="max" name="max" /> </p> <p> <input type="submit" value="送信" /> </p> </form>
3.検索結果表示テンプレートモジュール
検索結果表示テンプレートモジュールは、以下のように組みます。
・ ・(HTMLのヘッダーなど) ・ <$mt:GetQueryParamsToVars$> <mt:SearchContents content_type="商品"> <mt:If name="qp_item_name"> <$mt:SearchContentContain content_field="商品名" values="$qp_item_name"$> </mt:If name="qp_item_name"> <mt:If name="qp_min"> <$mt:SearchContentCompare content_field="単価" ge="$qp_min"$> </mt:If> <mt:If name="qp_max"> <$mt:SearchContentCompare content_field="単価" lt="$qp_max"$> </mt:If> <$mt:SearchContentSort content_field="単価"$> </mt:SearchContents> <mt:If tag="SearchContentLoadedCount"> <p><$mt:SearchContentLoadedCount$>件見つかりました</p> <mt:SearchFoundContents> <mt:If name="__first__"> <table> <tr><th>商品名</th><th>単価</th></tr> </mt:If> <tr> <td><a href="<$mt:ContentPermalink$>"><mt:ContentField content_field="商品名"><$mt:ContentFieldValue$></mt:ContentField></a></td> <td><mt:ContentField content_field="単価"><$mt:ContentFieldValue$></mt:ContentField></td> </tr> <mt:If name="__last__"> </table> </mt:If> </mt:SearchFoundContents> <mt:Else> <p>条件にあう商品はありません</p> </mt:If> ・ ・(フッターなど) ・
前半では、フォームから送信された条件を元に、MTSearchContentsタグのブロックで検索を行っています。
フォームのそれぞれの欄に値を入力されないこともありますので、空欄かどうか(=変数に値があるかどうか)をMTIfタグで判断し、値があるときだけ条件として使うようにしています。
そして、後半では、検索されたコンテンツデータをtableとして出力しています。