なんだかんだと休み休みも1ヶ月、悩みに悩んだのでメモ。
WooCommerceに日本対応のWooCommerce for Japanを入れている方は多いはず。
このプラグインを入れると、購入者のお名前も「名姓」ではなく「姓名」としてくれます。
しかし、WoocommerceにAmazon Payを導入してみると、「名姓」で出力されてしまうことが判明。
他がきちんと「姓名」で表示されるのに、受注管理画面で異彩を放ってしまうことになりますし、受注管理される方も「どうしてもということではないのですが…」と困り顔。
修正してみようと思ったのですが、ヘタなところにadd_action()するなどすると、何度も姓と名が入れ替わってしまうことになるので、支払いと支払完了画面のどちらかでフックができないかということ。
紆余曲折の末、woocommerce_thankyouフックにupdate_post_meta()を使って、データベースの上書きを狙ったのですが、エラーになってしまい上書きできず。
最終的に下記でできました。
functions.phpに下記を追加します。
add_action( 'woocommerce_thankyou_amazon_payments_advanced', 'ar_woocommerce_thankyou_amazon_payments_advanced', 100, 1 );
function ar_woocommerce_thankyou_amazon_payments_advanced( $order_id ) {
if ( ! $order_id ) return;
$order = new WC_Order($order_id);
$temp_billing_lastname = $order->get_billing_first_name();
$temp_billing_firstname = $order->get_billing_last_name();
$order->set_billing_last_name($temp_billing_lastname);
$order->set_billing_first_name($temp_billing_firstname);
$temp_shipping_lastname = $order->get_shipping_first_name();
$temp_shipping_firstname = $order->get_shipping_last_name();
$order->set_shipping_last_name($temp_shipping_lastname);
$order->set_shipping_first_name($temp_shipping_firstname);
$order->save();
}
setしただけでは$order内にchangesという要素が増えるだけで保存はされませんでした。
save()をすることで保存されました。
CRUDを初めて使用したのですが、save()のことを知っていればそんなに難しくなかった…わけです。
あーーーー、すっきり!!
他のWooCommerceのカスタマイズネタはこちら
WooCommerceのカスタマイズに困ったら
途中まで作成したけれどうまくいかない。
そんな場合でも引き継いで対応いたします。お気軽にご相談ください。
プロフィール
- 株式会社東芝にてソフトウェア開発11年、サスペンションメーカーの広報6年、国立大学情報システムセンター非常勤職員、個人事業主を経て、2016年9月に株式会社アールジャパンとして法人化。WordPressに特化したWEBシステムの開発に携わる。Microsoft Visual Basic®のプログラミングに関する著書が9冊、そのうち一部は国立図書館に寄贈されている。色彩検定1級、Shoplifyパートナー。趣味は手芸一般。編み物歴、洋裁歴は四半世紀以上。神奈川県中小企業家同友会 広報委員会副委員長・編集長。
最新の投稿
- WEBサイト発注入門2024年6月28日できるWEB担になろう!ホームページ修正依頼のコツ
- 経営者向け2024年4月27日WEBにおける合理的配慮とは
- ライティング2024年4月10日生成AIで記事をまるっと作成をオススメしない理由
- 経営者向け2024年3月22日経営指針の見えるWEBとは