
ども、オウタです。
当社ではWordpressでのメディア構築に数多く携わらせていただいておりますが、最近増えてきているのが自社でのECメディアのご要望です。
WordpressでECサイトというと、日本語対応しているものが少なく、公式に日本語対応とうたっているもがWelcartくらいです。
当社でもWelcartの導入経験もありますが、正直、使い勝手もあまり良くなく、バグも多い印象です。
そこで、当社で積極的に導入を進めているのが「Woocommerce」です。
「Woocommerce」は、Wordpressの開発元であるAutomattic社が2015年春に開発会社を買収し、Wordpressの公式ECプラグインとなっています。
ダウンロード数は750万を誇り、WooCommerceはすべてのWordPressプラグインの中でもトップ10に入っています。
そんなWoocommerceですが、日本ではまだまだ導入例が少ないようで、日本語化プラグインなどもあまり充実していません(「Woocommerce for Japan」というプラグインがあるのですが、あまり機能していないかんじ)。
そこで、Woocommerceの日本語化のポイントを解説します。
今回は、住所表示関連についてです。
1. チェックアウト時の住所情報入力フォームが日本語の並びではない
functions.phpに以下のような記述をすることによって、フォームの順序を日本語に対応させられます。
//functions.php /**チェックアウト時の住所の日本語対応**/ add_filter('woocommerce_checkout_fields','reorder_woo_fields'); function reorder_woo_fields($fields) { $fields2['billing']['billing_last_name'] = $fields['billing']['billing_last_name']; $fields2['billing']['billing_first_name'] = $fields['billing']['billing_first_name']; $fields2['billing']['billing_postcode'] = $fields['billing']['billing_postcode']; $fields2['billing']['billing_state'] = $fields['billing']['billing_state']; $fields2['billing']['billing_city'] = $fields['billing']['billing_city']; $fields2['billing']['billing_address_1'] = $fields['billing']['billing_address_1']; $fields2['billing']['billing_address_2'] = $fields['billing']['billing_address_2']; $fields2['billing']['billing_phone'] = $fields['billing']['billing_phone']; $fields2['billing']['billing_email'] = $fields['billing']['billing_email']; //これより以下は変更禁止 $fields2['shipping']['shipping_last_name'] = $fields['shipping']['shipping_last_name']; $fields2['shipping']['shipping_first_name'] = $fields['shipping']['shipping_first_name']; $fields2['shipping']['shipping_postcode'] = $fields['shipping']['shipping_postcode']; $fields2['shipping']['shipping_state'] = $fields['shipping']['shipping_state']; $fields2['shipping']['shipping_city'] = $fields['shipping']['shipping_city']; $fields2['shipping']['shipping_address_1'] = $fields['shipping']['shipping_address_1']; $fields2['shipping']['shipping_address_2'] = $fields['shipping']['shipping_address_2']; $fields2['account'] = $fields['account']; $fields2['order'] = $fields['order']; return $fields2; }
2. 管理画面の注文一覧の配送先住所表記が英語の順番になっている
/** 注文管理画面一覧の配送先を日本語対応 **/ add_filter('woocommerce_shipping_address_map_url_parts', 'shipping_address_map_url_parts_jp'); function shipping_address_map_url_parts_jp($address) { $address2 = array( 'postcode' => $address['postcode'], 'state' => replace_jpstatescode2statename($address['state']), 'city' => $address['city'], 'address_1' => $address['address_1'], 'address_2' => $address['address_2'], 'country' => $address['country'] ); return $address2; }
注文受け付けメールなどに記載される配送先住所と請求先住所が英語の順番になっている
/** 配送先住所の表示を日本語に対応 **/ add_filter('woocommerce_order_formatted_shipping_address', 'order_formatted_shipping_address_jp'); function order_formatted_shipping_address_jp($address) { $wcc = new WC_Countries(); //var_dump(['JP']); $address2 = array( 'last_name' => $address['last_name'], 'first_name' => $address['first_name'], 'postcode' => $address['postcode'], 'state' => replace_jpstatescode2statename($address['state']), 'city' => $address['city'], 'company' => $address['company'], 'address_1' => $address['address_1'], 'address_2' => $address['address_2'], 'country' => $address['country'], ); return $address2; } /** 配送先住所の表示を日本語に対応 **/ add_filter('woocommerce_order_formatted_billing_address', 'order_formatted_billing_address_jp'); function order_formatted_billing_address_jp($address) { $address2 = array( 'last_name' => $address['last_name'], 'first_name' => $address['first_name'], 'postcode' => $address['postcode'], 'state' => replace_jpstatescode2statename($address['state']), 'city' => $address['city'], 'company' => $address['company'], 'address_1' => $address['address_1'], 'address_2' => $address['address_2'], 'country' => $address['country'], ); return $address2; } /** 住所の表示順を日本語に対応 **/ add_filter( 'woocommerce_localisation_address_formats', 'localisation_address_formats_jp'); function localisation_address_formats_jp($formats) { $formats['default'] = "〒{postcode} {state}{city}{address_1}{address_2}{company} {last_name} {first_name}"; return $formats; } /** state_codeを都道府県名に置換 **/ function replace_jpstatescode2statename($code) { global $states; foreach($states['JP'] as $key => $state) { if ($key == $code) { return $state; } } }
こんなかんじですかね。
これで大体日本語表記に対応させられます。
通貨の表示などはまた今度。