staana-blog

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

WP e-commerceカスタマイズメモ -4 2008/1/31 木曜日

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

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

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

●カスタマイズ内容:

3. 支払い方法として、「クレジットカードのみ」(ただし、クレジットカードはPayPal、Google Checkoutなど(gold cartにアップグレードした場合。標準ではPayPalのみ)日本ではあまりおなじみではない方法のみ)or 「クレジットカード+manual payment option」の2種類しか選べなかったのを「銀行振込 or 郵便振替」、にカスタマイズ。

4. 上記の支払い方法でどちらが選択されたのか、購入履歴リストに表示されるように、カスタマイズ。

●現象:

  • 支払い方法を選択する際、「クレジットカード(PayPal)」のみか、「クレジットカード(PayPal)+ Manual Payment」の2つしかデフォルトの選択肢にない。
  • WP e-commerceの管理画面で注文No.が表示されない。
  • WP e-commerceの管理画面で支払方法の詳細(銀行振込か郵便振替か)までは表示されない。

●対策:

staana-shopではクレジットカードでの支払いは近い将来に実現するとして、まずは銀行振込と郵便振替のどちらかでお支払いいただくことに決めました。デフォルトでは必ず「クレジットカード」が選択肢に入ってきてしまいますのでこれをなんとかしなければと思いカスタマイズを試みました。

支払い方法の選択はWP e-commerceの管理画面の「Checkout Form Fields」ページで行います。このページでは他にお客様情報入力の際の入力エリアの表示順、必須項目の設定も行えます。
ページ下部にある「Payment Options」で上記2つの選択肢が並んでいます。ここで選んだものがcheckout.phpにより処理され、checkoutページでフォームとなって現れます。また「Checkout Form Fields」ページのフォームから送信された内容(name=’payment_method’ value=’1′ or ‘2′)はWordPressのoptionテーブルに格納されます。

具体的なカスタマイズはここからです。checkout.phpの最後のあたり、支払い方法のラジオボタンを表示させているところに手を加えます。

クレジットカードのラジオボタンの<li><input 〜 /></li>部分(name=’payment_method’ value=’1′)をコメントアウトにし、銀行振込用ラジオボタン(name=’payment_method’ value=’2′)と、新たに郵便振替用のラジオボタン(name=’payment_method’ value=’3‘)を加えます。もちろん<label 〜>も「銀行振込」と「郵便振替」という日本語を定義し表示するように設定します。これで見かけの上では支払い方法の選択で選択肢が 「銀行振込」と「郵便振替」の2つになりました。

さらに、 「銀行振込」と「郵便振替」のどちらが選択されたのかをWP e-commerce管理画面の「Purchase Log」ページに表示されるように変更を加えます。

まずWordPressのテーブル「wp**_purchase_logs」に「bankcheck」という名前のフィールドを手動で1つ追加し、ここに支払い方法として’1′(クレジットカード)、’2′(銀行振込)、’3′(郵便振替)のどれが選択されたかを格納します。

実際に格納するのはsubmit_checkout_function.phpの中です。submit_checkout_function.phpは全体がfunction nzshpcrt_submit_checkout() という1つの大きな関数定義になっていて「お客様情報」のフォームが送信された際の処理を行っています。
function nzshpcrt_submit_checkout()内で必須項目のチェックをした後、入力漏れがなければフォームの内容を「wp**_purchase_logs」テーブルへINSERTしています。ここで先ほどの支払い方法を「bankcheck」に格納するようにクエリに追加します。

さて、今度はWP e-commerce管理画面の「Purchase Log」ページに表示させなくてはなりません。「Purchase Log」ページの処理はdisplay-log.phpで行われています。ここではsubmit_checkout_function.php内でINSERTしたwp**_purchase_logsのデータを読み込んで表示させ、さらにUPDATEを処理します。

めでたくお客様からの注文が入るとこのページに注文内容が1行追加されますが、その中に支払い方法として何が選択されたのかを表示させます。

display-log.phpの275行目あたりに
if(get_option(’payment_method’) == 2)
というif文が現れます。ここでクレジットカードのgateway名(PayPalなど)または「Manual Payment」のどちらかが出力されるようになっています。これが 「Manual Payment」だった場合には「銀行振込」または「郵便振替」と表示させるようにswitchを追加しました。

また「Purchase Log」ページにはオーダーNo.は表示されないのでついでにこれも表示させるように追加しました。

最後に。 「Purchase Log」ページに表示項目を追加させる場合は<table>のカラム数を変更するのを忘れずに…表示が崩れてしまいます。
105行目あたりで計算させています。

TrackBack url: http://www.staana-studio.com/blog/wp-trackback.php?p=37

 

Leave a Reply