財団法人さっぽろ産業振興財団が運営する、事業提携を希望する道内の企業のデータベースサイトを制作しました。
WordPressベースとなっていますが、複数条件検索と、各ページの「連携申し込みフォーム」はこのサイト専用のプログラムとなっています。
私はデザインと、検索を含むテーマ全般を担当しました。
フォーム部分は市内のフリープログラマにプラグイン制作をお願いしています。
スマートフォン利用を想定する
事業者が提携先を検討するためのサイトという性格上、スマートフォン用のテーマは用意していません。
ですが、一応は想定しておくべきと考えました。
本文のフォントを大きく、余白を多めに取ることで、スマートフォンやタブレットでも閲覧しやすくしています。
また、CSSスプライトを利用して、画像のリクエスト数もできるだけ削りました。
リクエストの際にいちばん時間がかかるのが、プラグインで追加したCKEditorのJSファイルなので、公開画面のときは参照しないようにできればいいのに…と思います。
WP_Queryクラスのtax_query
このサイトはキーワード検索の他に、都市、産業区分での絞り込み検索ができるようになっています。
地域・業種はカスタムタクソノミー、産業区分はカスタムフィールドです。
こういった複雑な検索はWordPressの基本機能ではできませんが、3.0から本格的に実装された「tax_query」を利用すれば可能です。
一般的な絞り込みによく使われるWP_Query(query_posts関数)に、「tax_query」という配列を渡して、データベースに渡す「クエリ文」を生成させます。
WP_Queryクラスのメリットとデメリット
WP_Queryクラスの良いところは、安全にWordPressに最適化したクエリ文を生成できることです。
その反面、クエリ文を生成するまでのプログラムがひじょうに長いため、若干処理が遅くなります。
WP_Queryクラスではなく、直接PHPのモジュールでクエリ文を生成することも考えたのですが、不特定多数がアクセスするサイトなので、WordPressコアとの互換性や、安全性を優先することにしました。
このサイトは性格上、数千件に達するにはそうとう時間がかかりますが、これが不動産検索、中古車検索となった場合は、コンテンツ数、条件の項目数ともに膨大な数になります。
その場合は、クエリ文の生成もフルスクラッチの方が良いです。
大規模サイトでWordPressを採用する場合は、こちらの記事が参考になります。
WordPressは扱いやすさからデザイナーに人気のあるCMSである反面、本格的に使いこなすにはPHPの正しい知識が必要になってきます。
それぞれの関数が出力するデータの構造、配列の扱い、文字列の無害化、フィルター等による関数の拡張など。
フレームワーク、と呼ぶには微妙なシステムですが、Web制作者が覚えておくべきPHPのスキルを身に付けるには、最適な教材だと思います。