staana-blog

staana-studio 近況報告 ★ staana-shopがオープンしました!
 

WP e-commerceカスタマイズメモ -6 2008/2/18 月曜日

Filed under: デジタルな仕事, 仕事のメモ, WordPress — staana @ 10:32:am

追記:3/14にshopオープンしました! →shopへ行く

引き続き「カスタマイズメモ-1」でリストアップしたカスタマイズ部分のラフな詳細(?)です。

●カスタマイズ内容:

5. 同じく購入履歴リストとログ用注文控メールのタイトル部分に注文No.が表示されるように、カスタマイズ。

7. オリジナルではなぜかお客様のメールアドレスとこちらのログ用アドレスに確認メール&控メールがいかなかったのを、カスタマイズ。

●現象:

  • 注文後、お客様と自分とにメールが送られる設定になっているにもかかわらず送られない。
  • 自分のアドレスに送られる控メールのタイトルに注文No.が入っていないので確認しにくい。

●対策:

WP e-commerceの管理画面の「オプション」ページには「買い物ログの送信先メールアドレス」と「返答メールの送信元メールアドレス」を設定する箇所があり、ここにメールアドレスを入れておくと注文確定後、お客様への自動返信メールとショップの控メールが送られるような設定になっています。

この処理を行っているのは「transaction_results.php」から呼び出される

function transaction_results(transaction_result_functions.php内)

です。submit_checkout_function.php内のfunctionでいろいろ処理をした後 function transaction_results で送信結果ページ(成功ならthank youページ/クレジットカード払いが不調に終わった場合はその結果)を出力し、ショッピングカート内のデータ、名前、住所などのお客様情報を集めてメールの本文を編集し、お客様とショップ用にメールを送ります。

ところが、ショップ用の控メールは届くものの、一番大事なお客様へのメールがなぜか届きません…

submit_checkout_function.php内のfunction を調べてみたところ、送信結果ページを出力後、ごく簡単な内容のショップ用控メールを送る処理をした後、return false;となっており、お客様へのメール本文の編集と肝心の送信を行う前にfunctionを出てしまう仕様になっていました。

これではメールはいくら待っても送られませんね。そこでこの「return false;」をコメントアウトにし、その後の処理が続行されるようにしたところ、無事メールが送られるようになりました。

送られてきたメールを確認すると、少し内容的に乏しい感じでしたので、最低限必要な情報が見栄えよく送られるよう編集し直しました。(もちろん、そのまま送ってしまうとひどい文字化けを起こしますので、日本語用にmb_send_mail()に変更するのを忘れずに…)

ついでにショップの控メールのタイトルに分かりやすいよう注文No.を入れるなどなどさらに編集を追加し、出先でもご注文をいただいたらすぐ分かるよう、自分の携帯にも簡単なメールを送るようにしておきました。迅速に対応できるようバッチリ(?)カスタマイズしました :-P


 
 

WP e-commerceカスタマイズメモ -5 2008/2/15 金曜日

Filed under: デジタルな仕事, 仕事のメモ, WordPress — staana @ 5:58:pm

追記: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へ移るという従来の動きを経てオーダーがショップに届く、という流れになります。

今回のカスタマイズの中でこれが一番の大仕事でした :-|