WooCommerce マイアカウントで顧客情報が保存されない原因と直し方

WooCommerce マイアカウントで顧客情報が保存されない原因と直し方

WooCommerce マイアカウントで顧客情報が保存されない原因と直し方

WooCommerce のマイアカウントページで顧客情報(アカウント詳細)を更新しても、保存や再読み込み後に古い情報に戻ってしまう場合、多くの原因はプラグインの重複フックや非互換性にある。なかでも EU VAT 系プラグインがアカウントページへ勝手に項目を追加し、保存時のデータ上書きや無効化を引き起こす事例が頻発している。

なぜアカウント詳細が保存されないのか

なぜアカウント詳細が保存されないのか

この不具合は大きく分けて3つのパターンに分類できる。優先度が高い順に、VAT フィールドの重複登録、他プラグインとの競合、そしてキャッシュやセッションの不整合だ。

原因1 VAT フィールドの重複(特定プラグインがアカウント編集画面に2重の VAT フィールドを出力し、保存時にフィールドが競合)
原因2 プラグイン競合(別のプラグインが WooCommerce の保存処理に割り込み、データ更新を阻害)
原因3 キャッシュ・セッション不整合(サーバーキャッシュやブラウザキャッシュが古い情報を表示し続ける)

実際のところ、管理画面から何度更新しても「このサイトで重大なエラーが発生しました」という表示が出ず、静かに更新前の値に戻ってしまうケースでは、原因1か原因2の可能性が極めて高い。

VAT フィールドの重複が引き起こす保存不能の仕組み

VAT フィールドの重複が引き起こす保存不能の仕組み

WooCommerce の最新バージョンでは、ブロックベースのチェックアウトに VAT フィールドを自動で追加する機能が実装された。これが影響し、特定の EU VAT 系プラグイン(WP VAT MOSS など)がマイアカウントページに別途 VAT 項目を出力する場合、同一ページに同じ名前のフィールドが2つ存在する状態になる。

この重複によって、ブラウザが送信する POST データとサーバー側で処理されるフィールド名が食い違い、WooCommerce の `update_user_meta` フックが期待どおりに動作しなくなる。保存ボタンを押しても「処理中」のまま動かない、または一瞬成功したように見えて古い情報が再表示されるという症状が起きる。

Before 重複した VAT フィールドがアカウントページに2つ表示される
VAT番号
VAT番号
After フィールドは1つだけ表示され、正常に保存される
VAT番号

WP VAT MOSS など EU VAT 系プラグインの特定と更新

WP VAT MOSS など EU VAT 系プラグインの特定と更新

まず管理画面のプラグイン一覧から、以下のキーワードを含むプラグインが有効化されているかを確認する。

  • WP VAT MOSS
  • EU VAT Assistant
  • WooCommerce EU VAT Number
  • EU/UK VAT Compliance

これらのプラグインが1つでもインストールされていれば、バージョンが最新かどうかを確かめる。特に WP VAT MOSS の場合、バージョン1.4.6以前で今回の「VAT 重複」バグが報告されており、1.4.7以降にアップデートすることで重複フィールドが解消されるように修正されている。

アップデート後も改善しない場合は、プラグインを一時停止し、標準テーマ(Twenty Twenty-Four など)に切り替えてから再テストする。これで直れば、テーマまたは他のプラグインが VAT フィールドを追加出力している可能性が高い。

プラグインの競合を特定する手順

プラグインの競合を特定する手順

VAT 以外の情報(名前、メールアドレス、住所など)も更新できない場合は、より広範な競合テストが必要だ。以下の順でトラブルシューティングを進める。

STEP 1 WooCommerce と WordPress を最新バージョンに更新する
STEP 2 子テーマや functions.php に追加したカスタムコードをすべてコメントアウトし、保存処理に関係する独自フックを無効化する
STEP 3 WooCommerce と連携する会員系プラグイン(Membership、Subscriptions、Payments など)を1つずつ停止し、都度アカウント詳細を更新する
STEP 4 原因プラグインを特定したら、開発元のフォーラムやサポートに同様の不具合が報告されていないか確認し、修正版を待つか代替プラグインへ切り替える

STEP 2 で一時的に無効化するカスタムコードの例を挙げる。`woocommerce_save_account_details` や `woocommerce_save_account_details_errors` などアカウント保存に関わるアクションフックをすべて一時的にコメントアウトし、素の WooCommerce で保存が通るかどうかを見極めるのが確実だ。

キャッシュに惑わされず正しくテストするには

キャッシュに惑わされず正しくテストするには

テスト中に「直ったかも」と思ったら実はキャッシュのせいだった、というのはよくある落とし穴だ。以下の点を押さえてテストを進める。

  • テストは必ずシークレットウィンドウ(プライベートブラウズ)で行う
  • W3 Total Cache や WP Rocket などのキャッシュプラグインを使用している場合は、テスト中は全キャッシュをクリアし、できればプラグインを一時停止する
  • サーバー側で Varnish や Nginx の FastCGI キャッシュが動いているレンタルサーバーでは、サーバー管理画面からキャッシュを完全にパージする
  • Cloudflare などの CDN を経由している場合は、Cloudflare ダッシュボードで「キャッシュを削除」を実行する

また、WooCommerce のセッションハンドラーがユーザー情報を保持しているケースもある。管理画面の「WooCommerce > ステータス > ツール」から「顧客セッションをクリア」を実行し、そのうえでアカウント更新を試してほしい。

デバッグログを有効にして根本原因を可視化する

デバッグログを有効にして根本原因を可視化する

ここまでの方法で解決しない、または原因プラグインを特定できない場合は、WordPress のデバッグモードを有効にしてエラーログを確認する。

FTP またはサーバーのファイルマネージャーから `wp-config.php` を開き、以下の定数を追加または変更する。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

これにより `/wp-content/debug.log` に PHP エラーが出力されるようになる。アカウント詳細の更新を再現したあと、このファイルを開けば、どのプラグインのどのファイルでエラーが発生しているかが具体的に記録される。たとえば「PHP Fatal error: Uncaught Error: Call to undefined function vat_number_save…」のような行が見つかれば、該当するプラグインが犯人だ。

よくある質問

VAT フィールドが増えただけで保存できなくなるのはなぜか

WooCommerce はアカウント保存時に、同名のフィールドが複数あると最後の値だけを処理するか、あるいは処理自体をスキップする。このため表面上は入力できるのにサーバーに反映されず、リロードで元に戻ってしまう。

プラグインのアップデート後も改善しない場合はどうするか

プラグインを完全に削除してから再インストールし、データベースに残った不要なオプション値を手動で削除する。wp_options テーブルにプラグイン固有の設定が残っていると、バージョンアップ後も誤動作することがある。

標準テーマに切り替えられない事情があるときはどうすればよいか

ステージング環境(テスト用の複製サイト)を作成し、そこでのみテーマとプラグインの切り分けテストを行う。本番環境を触らずに原因究明できる方法として最も安全だ。

アカウント詳細の保存だけ失敗し、注文や住所変更は問題なく更新できるのはなぜか

WooCommerce のアカウント保存フックは、注文処理や住所変更のフックとは別に実行される。特定のプラグインがこのフックだけに悪影響を及ぼしている可能性が高い。逆に言えば、影響範囲が限定的なため原因プラグインの絞り込みはしやすい。

PHP のバージョンが古いと起きる問題か

直接的ではないが推奨環境を満たしていないと、プラグインが最新の WooCommerce フックに対応できず、予期せぬ挙動を引き起こすことがある。PHP 8.0 以上を強く推奨する。

この記事のポイント

  • アカウント詳細の更新不能は VAT フィールド重複が最も多い原因
  • WP VAT MOSS 1.4.7 以降へのアップデートで解決する事例が多数報告されている
  • それ以外の競合はプラグインの1つずつ停止とキャッシュクリアで切り分けられる
  • デバッグログでエラーを可視化すれば、修正の手がかりが得られる
  • テストは必ずシークレットウィンドウとキャッシュ無効状態で行う
佐々木 太陽

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化 ・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門 ・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標 ・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意 ・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

メッセージを残す