WooCommerce 住所変更 あれっ ?
by takeoy · 2017年9月21日
今、開発を進めているのは
WooCommerce バージョン 3.1.2
現時点での最新バージョンを使用しています
商品の購入者となってテストしていて、気が付いたのですが
マイアカウント で 請求先や配送先の住所情報を変更して保存しても
注文するときに表示される住所情報に反映されてない (>_<)
試しに一度ログアウトして再ログインしてみると
今後は反映されてました わぁお~ びっくりした
ネットでいろいろ調べてみると
英語の投稿に同様の問題に遭遇した人がいて
あれやこれやとアドバイスしている内容が結構面白いです。。。
どうも
/woocommerce/includes/data-stores/class-wc-customer-data-store-session.php
のコードを修正することで対処できるとのこと
Github に修正コードが掲載されてました
実際、この通り 修正して確かめてみると 確かに問題が解消されました !!!
話はこれで終わりではなく
さきほどの「アドバイスが面白い」ですが
- プラグインのコアのファイルを直接触るな・・・
- なら、どうすりゃいいの・・・
- 子テーマに配置したら・・・
- ★ テンプレート (templates)配下のファイルであればこれが有効打のよう
- でも、includes配下のクラスファイルでは、この手は使えないようです
- フック(Hook) のアクションかフィルターを 使ったら・・・
- 具体的な方法までは言及されてませんでした
話はここで終ってました
少し時間があったので
これまで耳にはしたけど、あまり真面目に見てなかった フック(Hook)を勉強してみました
- フックの概念をかじって
- WooCommerce で Action and Filter Hook Reference というのに辿り着きました
- class-wc-customer-data-store.php には action hook が定義されてました が・・・
- class-wc-customer-data-store-session.php には、action も filter Hook も定義されてませんでした・・・
- フックが無い時はどうすればいいの。。。と思いつつフックの動作を試してみようということで
- class-wc-customer-data-store-session.php の function read に do_action( 'woocommerce_xxxx' ); でフックを加えてみました(コアのファイルを修正するので本末転倒ですが。。。)
- 子テーマのfunctions.php に add_action と 適当な function を 定義(メッセージをecho )して実行してみると
- 確かに、呼び出されて メッセージが画面に表示されました
- なるほど、これがフック (Action)ですね
- ただ、この方法でも、実際の修正は、元々あるロジックを上書きしないといけないので、インサートというよりはオーバーライドになります
- いろいろ引数を渡したりしてやってみましたが、なかなか思うように動いてくれません
とりあえず、何となくフックが分かったところで一旦休憩
まぁ本番に入る前には WooCommerceがバージョンアップされて、修正コードが適用されるでしょう・・・
適当な上書き方法がまだ分かっていませんが、とりあえず コアファイルを直接修正しました (;^ω^)
最近のコメント