WP e-commerceカスタマイズメモ -5 2008/2/15 金曜日
追記:3/14にshopオープンしました! →shopへ行く
久しぶりの投稿となってしまいました。
引き続き「カスタマイズメモ-1」でリストアップしたカスタマイズ部分のラフな詳細(?)です。
●カスタマイズ内容:
6. お客様情報を入力後確認画面が出ずにすぐにthank youページへ移動してしまう仕様になっていたのを、入力フォームの必須項目チェック後に確認画面を出すように、カスタマイズ。
●現象:
- 注文確定前に最終確認を行うページがない。
●対策:
WP e-commerceでは、
ショッピングカートに追加しレジへ
↓
カートの中身を確認
↓
お客様情報の入力
↓
注文確定(Thank youページへ)
という流れになっていて、 「お客様情報の入力」で入力必須項目のチェックをクリアするとそのまま注文が確定してしまい、買い物内容や入力内容の最終確認をする機会がありません。
私がこれまでネット上で買い物をしたお店はどこも最後に確認の機会を与えてくれて「本当に買っていいのか」と今一度心の整理をつけてくれました。
最終確認のページはやはり必要だと思いましたし、「お客様情報」でつい入力ミスなどがあって商品を届けられない、連絡が取れないなどのトラブルを最小限にとどめるため最終確認のページを追加する事にしました。
お客様情報を入力してsubmitボタンがクリックされると、function nzshpcrt_submit_checkout()(submit_checkout_function.php内で定義)による処理が行われます。
function nzshpcrt_submit_checkout()ではまずフォームの入力必須項目のチェックが行われ、エラーがあればエラーメッセージを返し、またチェックをクリアすると住所などのフォームの内容をMySQLテーブル「wpxx_purchase_logs」にINSERTします。その後もろもろの処理をし、transaction_results.phpへ移りthank youページの出力となります。
そこでSESSION[]を利用して「確認ページを出力したかどうかのフラグ」を持たせ、さらにfunction nzshpcrt_submit_checkout()に手を加え確認ページ未出力(フラグ=off)であるなら必須項目チェックの結果すべてクリアであった場合はconfirmページ(確認ページ)を出力、となるようにしました。
confirmページの処理は「お客様情報の入力」フォームを出力させている「checkout.php」を参考にconfirm.phpを新たに作り、この中でショッピングカートの内容を表示させ(このショッピングカートの内容もconfirmページに合うよう少々改造)、続けてフォームに入力された内容を表示させる処理を行います。具体的には他のWP e-commerceで使用しているページと同じように新たにWordPressのページを1ページ追加し、wp-shopping-cart.php内でconfirmページが要求されたらconfirm.phpが動くように関連づけます。
さらに、confirmページのurlはいろいろと他でも使う事があるので、他のページ同様にWordPressのオプションテーブル「wpxx_option」に「confirm_url」として手動で追加、これで
get_option(’confirm_url’);
でいつでも取得する事ができます。
confirmページを表示させる際に先ほどのSESSION[]フラグをonにしておきます。(これを忘れると永遠に注文がこなくなってしまいます…)
そして最終的に「注文確定」ボタンがクリックされると再び function nzshpcrt_submit_checkout()に入り、今度はwpxx_purchase_logsにお客様情報が書き込まれ、transaction_results.phpへ移るという従来の動きを経てオーダーがショップに届く、という流れになります。
今回のカスタマイズの中でこれが一番の大仕事でした
TrackBack url: http://www.staana-studio.com/blog/wp-trackback.php?p=39
サイトのWordPress一元化を考えていたところちょうどこちらのサイトでWP e-commerceを知りました。素晴らしいですね~。
自分でそこらへんまでカスタマイズできるのか不安なところもありますが、これからちびちびと調べながら頑張ってみようかと思います。
megさま
コメントありがとうございます!
phpは初心者でしたが、ソースを追ううちに何となくプラグインの動きが分かるようになりここまでカスタマイズすることができました。
Wordpressを使う前に同じくphpベースの「joomla!」というオープンソースCMSのサイトを作りましたが、こちらのモジュール(WPでのプラグインにあたります)に比べてWPのphpはとても分かりやすいな、と感じました。
phpを普段使っていらっしゃるのならすぐにどのような構造になっているのかお分かりになると思います。どうぞ頑張ってください!