「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。Kindle本で、定価250円です。2つの数値で条件を指定して検索する場合を取り上げます。以下のような事例を基に解説します。商品の価格を表すために、「entry_price」というベースネームのカスタムフィールドを作っているものとします。いう名前を付けるものとします。いう条件で検索できるようにします。検索フォーム側には、上限/下限の2つの数値を入力するために、テキスト入力欄を2つ作ります。下限/上限のテキスト入力欄のname属性を、それぞれ「entry_price_min」「entry_price_max」にするなら、テンプレートの検索フォーム部分は以下のように組むことが考えられます。</p></form>なお、このフォームを含むテンプレートの例は、以下のリンクからダウンロードすることができます。検索結果表示テンプレート側では、以下のような手順で、検索結果を出力します。MTGetQueryParamsToVarsタグを使って、フォームから送信された値を変数に代入します。MTSearchConditionCompareタグやMTSearchConditionCFSectionタグ/MTSearchConditionCFCompareタグを使って、数値での検索条件を指定します。1.で作ったフォームだと、MTGetQueryParamsToVarsタグによって、入力された数値は「qp_entry_price_min」と「qp_entry_price_max」という変数に代入されます。これらの変数を、検索条件の下限/上限に指定します。カスタムフィールドで検索するので、MTSearchConditionCFSectionタグとMTSearchConditionCFCompareタグを使って条件を指定します。上記の話に沿って、検索結果表示テンプレートの検索部分を作ると、以下のようになります。</mt:SearchConditionCFSection></mt:SearchConditions>4行目のMTSearchConditionCFCompareタグで、ge/leの2つのモディファイアを使って、範囲の下限と上限を指定しています。上記の部分を含むテンプレートの例は、以下のリンクからダウンロードすることができます。数値の範囲で検索する場合の検索結果表示テンプレートの例3.SearchEntriesプラグイン関係の記事の一覧SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。初心者なもので説明が至らなかったら申し訳ありません。便利なプラグインでいつも大変助かっております。703」と言うエラーが出てしまいます。本文のフリーワード検索は問題なく使用できる(再構築され、きちんと出力される)のですが、カスタムフィールドの検索を行おうとすると、検索結果を出力する時(再構築する時に)エラーが出てしまいます。20:17>SHさんこんにちは。ご質問の件ですが、MTSearchConditionCFSectionタグのfieldモディファイアに指定しているベースネームが、実際のカスタムフィールドのベースネームと一致していないのではないかと思います。ベースネームの指定を見直してみてください。21:04>藤本お忙しい所早速の回答ありがとうございます。説明の補足ですが検索を利用しているのは、WEBサイトの下部(例:ウェブサイト.com/ブログ/)のブログでカスタムフィールドの作成はシステムから行いました。管理画面上で確認した所、ベースネームの指定に間違いはありませんでした。(例:cf_01等といった指定をしております。ブログでカスタムフィールドを作成しなくてはならない、cfと言う文字は禁止といった条件等はありますでしょうか?度々で申し訳ありませんがよろしくお願い致します。藤本様宛ての様と当方の名前が抜けていました。誠に申し訳ありませんでした。22:02>SHさんこんにちは。システムのカスタムフィールドに正しく対応していない不具合が見つかりました。修正版を明日公開します。迅速な対応、感謝致します。明日の修正版楽しみにしております。不動産の構築をしているのですが、複数、多数のAND検索+OR検索が苦労しておりまして...藤本様のプラグインで解消できるのではないかと期待しております。Fields」ttp://eatdrinksleepmovabletype.com/plugins/more_custom_fields/index.php(他の作者様のプラグインで申し訳ないです。)で作成したものを検索フォーム側でチェックボックスとして複数選択して結果を返す事は可能でしょうか?プラグインの改良後など、お時間のある時で構いませんのでご教授よろしくお願い致します。09:01>SHさんこんにちは。不具合を修正した版を公開しました。Fieldsプラグインの件ですが、保存されるデータの形式を見た限りでは、一部条件はありますが、検索することは可能なはずです。明日にでも、その方法を記事にしたいと思います。素晴らしいプラグイン、いつもありがとうございます。ひとつ気になる挙動がありましたので、お知らせします。le="$max"」という設定になるかと思いますが、カスタムフィールドを浮動小数点で設定している場合に、leがltのような挙動をみせます。le="1.2"」とすれば、値が1.2のものは該当しそうですがヒットしません。le=1.20001"」などとしてみるとヒットします。le="500"」とすれば、500のものがヒットするなど、大丈夫そうです。原因や対処方法など分かりましたら、ご教授ください。21:14>マッキーさんこんにちは。ご質問の件ですが、起こっている動作からすると、おそらくはPerl内部で10進数と2進数との間で変換する際の誤差の影響だと思います。0.2は10進数では割り切れる数ですが、2進数にすると割り切れない数になります。それを有限の桁数で表すために、ごくわずかな誤差が生じます。保存できないので、いかんともしがたいところです。難しそうな問題があるようですね。詳細は理解が及びそうにないですが、根本にかかわる、簡単に解決できる問題ではないことは理解できました。みたいな形で、誤差レベルの数字を足すことで対処できそうです。