補足です。
住所を自動入力にするとこういった現象が起きますが、自動入力にしないと正常動作をする様です。
使っていないので正確性に書けますが、WooCommerce For Japan という WooCommerce を拡張するプラグイン
(https://ja.wordpress.org/plugins/woocommerce-for-japan/)
の話ですよね。
それなら
https://ja.wordpress.org/plugins/woocommerce-for-japan/#developers
をある貢献者に連絡をとって聞いてみるとよいと思います。
ご指摘の部分では確かに東京と北海道がないですが( fuction wc4jp_status )、そこに woocommerce_states フックを利用して追加したとしても、正しく動作するかわからないためです。
CG
(@du-bist-der-lenz)
kimipooh さんの提案と同じく、WooCommerce 日本版のフォーラムにも質問していただければ有意義です。トピックとして既出事項としてあるかご確認ください。
kimipooh 様 CG 様
ご返答ありがとうございます。
すでにWooCommerce For Japanの貢献者様にはお問い合わせさせていただいたのですが
色々な所で聞いてみたく、こちらのフォーラムにもトピを立たせていただいた次第です。
ご意見の通り、 WooCommerce日本版フォーラムでも質問してみようと思います。
ちなみに動作保証はしませんが、北海道と東京を WooCommerce に追加するには、
class-wc-address-field-4jp.php の wc4jp_states を参考にすると
テーマのfunctions.php に下記を追加することです。
面倒なので翻訳部分はオフにして日本語のみにしてますけどね。
もちろんこれで意図した動作になるかは全く分かりません。
なにかの理由があって意図的に北海道と東京を外している可能性もありますので、そういう意味も込めて WooCommerce For Japanを開発している方に聞いてみてはとお伝えしたのでした。
add_filter( 'woocommerce_states', array($this, 'add_wc4jp_states'), 99 );
public function add_wc4jp_states( $states ){
if(get_locale() == 'ja'){
$states['JP']['JP50'] = '北海道';
$states['JP']['JP51'] = '東京'';
}
return $states;
}
kimipooh様
色々とありがとうございますm(_ _)m
WooCommerce For Japanの方に問い合わせをして、一度お返事をいただく事が出来ました。
「北海道と東京が抜けているのは本体側に問題ない日本語訳が入っているから」
という事でした。
ただし、現在直面している問題は「住所を郵便番号から自動入力する」方法にしている場合
北海道・東京に関しても郵便番号を入れると住所が自動入力はされるのですが、
都道府県の部分が「Undefined」となり、送料がうまく取得できないという部分です。
北海道と東京以外は自動入力の場合も都道府県部分が自動で切り替わります。
ただ、自動入力後に「Undefined」になった都道府県を「北海道」「東京」と手動で選択し直した場合は、送料が表示される形なのです。
そのため、この「Undefined」部分が正常に表示される様になれば問題は解決するのではないかと思っております。
が…私はそこまでのカスタム能力がないため、WooCommerce For Japanの方に問い合わせしたりこちらのフォーラムにトピを立てさせていただいている次第です。
今後他の方にも役立つかと思いますので、このトピは解決まで続けさせていただきたいと思います。
解決まで何卒よろしくお願いいたします。
なるほど。
https://translate.wordpress.org/projects/wp-plugins/woocommerce/stable/ja/default
の翻訳データをみると、県と府は、岐阜、京都など岐阜県、京都府ではないのですよね。
北海道と東京都はそう入っていると。ただそれは翻訳データであって、処理に北海道と東京は入ってなさそうなのですけどね。
woocommerce の
include/class-wc-countries.php をみると $states で日本は定義されていません。
これをwoocommerce for japan のclass-wc-address-field-4jp.php で定義しているようです。
なので、woocommerce for japan に東京と北海道が抜けているので、woocommerce 側でも処理されてない気がするんですよね。
なのでテストするならば、東京と北海道を追加することです。
テーマの functions.phpに次のコードを追加してみてください。
(動作がおかしくなった場合に備えて、FTPで functions.phpファイルを編集しなおせるようにしておくのがよいと思います)
add_filter( 'woocommerce_states', array($this, 'add_wc4jp_states'), 99 );
public function add_wc4jp_states( $states ){
if(get_locale() == 'ja'){
$states['JP']['JP01'] = __( 'Hokkaido', 'woocommerce' );
$states['JP']['JP13'] = __( 'Tokyo', 'woocommerce' );
}
return $states;
}
これで、woocommerce for japanでかけている、JP01版とJP13をそれぞれ woocommerce へ追加し、翻訳(Hokkaido = 北海道、Tokyo = 東京都)については、woocommerce 側の翻訳データをつかうって感じでいけそうには思います。
kimipooh様
丁寧なアドバイス、ありがとうございます。
上記コードを追加してみたところ、Woo関連ページが全て真っ白になってしまいました。
class-wc-address-field-4jp.phpに北海道と東京を追加してみた事もあるのですが、その際はページが真っ白にはなりませんでしたが、何の変化も起こらない(北海道と東京の記述がローマ字になって表示される様になっただけ)形でした。
やはりプラグイン内部で調整を行なっていただく事をお願いするしか方法はないのですかねぇ……
先ほどWooCommerce For Japanの方よりご連絡をいただきました!
バグとして修正して下さったとの事で、新しいバージョンがアップされました。
検証したところ、問題なく動作する様になりました^^
https://ja.wordpress.org/plugins/woocommerce-for-japan/
私は最新バージョンにしても、バグが直らなかったのですが、
@kimipooh さんを参考に
class-wc-address-field-4jp.php
の中にある
//Add Ken and Fu to prefectures in Japan.
こちらの下に表記されてある都道府県一覧に
$states[‘JP’][‘JP01’] = __( ‘Hokkaido’, ‘woocommerce’ );
$states[‘JP’][‘JP13’] = __( ‘Tokyo’, ‘woocommerce’ );
こちらを追加した所バグが修正されました!
@kimipooh さんありがとうございました!