前にも書きましたが、当社のもうひとつのサイトfujiで使用しているWordpressのプラグイン、yak-for-wordpressを主に日本国内で使用する場合の最低限のカスタマイズ。
といってもそんなにいじらなくても使えます。yak-for-wordpressはWordpress上でショッピングカートシステムを構築するためのプラグインです。
まず日本語がおかしい。日本語の翻訳をしてるのはどうやら日本人じゃないんじゃないかと想像しています。
直そうかと思ってja.poファイルを開いたんですが、ふとen.poファイルと見比べてみると行数が倍あります。そこでen.poファイルをコピーしてそれを翻訳してみました。と、なにかおかしい。管理画面の英文なんですが、訳しても日本語が表示されないんです。そこでいろいろファイルを開いて見てみると、管理画面の英文はただのプレーンテキストになっていてgettextの形になってませんでした。うーん、これはそのうちやるぞという作者の意思表示なのか、はたまた忘れているのか分かりませんが、とりあえずこのあたりはそのままにしておきました。
次に桁区切りの問題です。これは前にも書いたQuick.Cartでも苦労しました。ドル表記に合わせているのでしょうが、とにかくあらゆる金額の表示に.00を付け足すんです。例えば商品価格を1000円と設定しても、画面上に表示される金額が常に1000.00円になります。これは本当に苦労しました。しかしyak-for-wordpressはそこはよく考えられていて、管理画面から設定できます。管理画面でMoney FormatをNo decimal placesにすると.00は消えます。しかし自動送信の注文確認メールを見てみるとここにいましたよ、.00が。商品価格や配送料の最後に.00が付いていました。
これを表示させないためyak-payments.phpの最後の方の362行目あたり
$detail = __(‘Title’, ‘yak’) . “: %s¥n” .
__(‘Quantity’, ‘yak’) . “: %d¥n” .
__(‘Price’, ‘yak’) . “: %8.2f¥n” .
__(‘Total’ , ‘yak’) . “: %8.2f¥n¥n”;
$detailmsg = ”;
foreach ($results as $result) {
$price = $result->price;
$qty = $result->quantity;
$totalprice += ($price * $qty);
$itemprice = $price * $qty;
$totalquantity += $qty;
$detailmsg = $detailmsg . sprintf($detail, $result->itemname, $qty, $price, $itemprice);
}
$detailmsg = $detailmsg . __(‘Shipping costs’, ‘yak’) . sprintf(‘: % 8.2f’, $shipping) . “¥n”;
ここの8.2が怪しいと思い
$detail = __(‘Title’, ‘yak’) . “: %s¥n” .
__(‘Quantity’, ‘yak’) . “: %d¥n” .
__(‘Price’, ‘yak’) . “: %0.0f¥n” .
__(‘Total’ , ‘yak’) . “: %0.0f¥n¥n”;
$detailmsg = ”;
foreach ($results as $result) {
$price = $result->price;
$qty = $result->quantity;
$totalprice += ($price * $qty);
$itemprice = $price * $qty;
$totalquantity += $qty;
$detailmsg = $detailmsg . sprintf($detail, $result->itemname, $qty, $price, $itemprice);
}
$detailmsg = $detailmsg . __(‘Shipping costs’, ‘yak’) . sprintf(‘: % 0.0f’, $shipping) . “¥n”;
としてみたら.00は表示されなくなりました。僕はPHPはまったく分からないのでこれが正しいのかどうかちょっと自信が無いのですが、今のところ問題は無さそうです。
そして住所表記の問題です。こういうカートシステムではお客様に配送先等の住所を入力して頂く訳ですが、これもやはり海外仕様のためか、入力順が逆になってます。管理画面でフォームの表示順を変更できたらいいんですが、yak-for-wordpressにはその機能はありません。テンプレートをいじってフォームの表示順は変更したんですが、注文内容の確認画面と自動送信の注文確認メールに表示される住所はやっぱりそのままでした。
そこでyak-for-wordpress.phpの2238行目あたり
$caddress['email'] = $_POST[$type . '_email'];
$caddress['recipientname'] = $_POST[$type . '_recipientname'];
$caddress['phone'] = $_POST[$type . '_phone'];
$caddress['addr1'] = $_POST[$type . '_addr1'];
$caddress['addr2'] = $_POST[$type . '_addr2'];
$caddress['suburb'] = $_POST[$type . '_suburb'];
$caddress['city'] = $_POST[$type . '_city'];
$caddress['region'] = $_POST[$type . '_region'];
$caddress['postcode'] = $_POST[$type . '_postcode'];
$cty = $_POST[$type . '_country'];
$caddress['country'] = $countries[$cty];
この部分の順序を変更するとうまくいきました。ただし先頭はメールアドレスにしておかないと駄目みたいです。自動送信の注文確認メールが送信されなくなりますので。
それと最後のcountryなんですが、当店は国内しか配送しないので余計な物なんですが、これを消しちゃうと配送料の計算がおかしくなってうまくいきませんでした。注文内容の確認画面と自動送信の注文確認メールにJapanと表示されちゃいますが、そのまま使ってます。
これだけいじれば最低限日本国内で使用出来ると思います。
ところで、yak-for-wordpressは本当にシンプルなんでこういう時は手間が掛からずいいんですが、その反面かえって面倒くさいところも有ります。例えば商品のサイズやカラーはカテゴリーを利用しています。これは本来のカテゴリーと違って出来れば見せたくない物なんですが、これを隠す方が手間が掛かりました。まだ完全に隠れていないかもしれませんが。
最後に日本語ファイルを置いておきますのでyak-for-wordpressを使ってみたい方はご利用ください。
yak-ja.zip

こんにちは。
http://inter-surf.com/d-shop/
上記テストサイトにて、こちらの日本語ファ
イルを使用させていただきましたところ商品
を追加して購入に進むと、
国 : 都道府県
と表示されてしまいます。
またその下の、
都道府県 : -> 市町村区
番地建物 : -> 住所1
住所 : -> 住所2
というようにフォームを変更したいのです
が、どのファイルを編集したら良いかお時間
のある時にでもぜひご教授いただければと思
います。
http://aqple.net/archives/498
さんの方も参考にさせていただいたのです
が、Add to Cart, Use this address 等、所々
が英語になっているため、こちらの方が使い
やすく感じました。
お忙しいところ恐縮ですが、よろしくお願いいたします。
インターサーフ
左高
こんにちは、左高さん。
ホームページ拝見しました。大宰ですか、良く読んだ物です。
ところでお尋ねの事は、単純にフォームのラベルを変更するだけですか?ラベルを変更するだけならpoファイルを扱えるソフトでその箇所の日本語訳を編集し直すだけです。僕はMacを使ってるのでPoeditというソフトを使ってます。PoeditはWindowsでもあったと思うんですが、まぁ、一度調べてみて下さい。
それともフォーム自体をいじりたいならyak-view-address.phpというファイルを開いてみて下さい。その名のとおり配送先の住所のフォームのファイルです。ただ投稿記事でも少し触れましたが、住所の並びが外国仕様なのでややこしいです。それにregionだとか、cityだとか、suburbだとかいまいち中途半端な区切りで国内でこのまま使うには悩む所です。これはyak-for-wordpress自体がシンプルを多分追求した物だからしょうがないですけどね。WP e-Commerceだとこのあたりはカスタマイズも楽で、管理画面からフォームの追加や削除が出来たはずです。話がそれましたね。
とりあえず上記の話を参考にしてみて下さい。