WooCommerceは、WordPressでECサイトを構築するなら、選択肢に入ってくるプラグインです。
自身も運営するサイトに導入しており、当記事タイトルのような困ったことがありましたが…
解決策を共有したいと思います。
実際に起きた状況
- WooCommerceのマイアカウントにログインできない。
- マイアカウントのパスワードリセットができない。
ログインボタンやリセットボタンを押してもページが切り替わらず、同じページにリダイレクトされます。
エラーメッセージも出ません…
お客さまがご自身のアカウントページに入れない。パスワードが間違ってるのかな?と思ってリセットをかけても機能しない…といった大変困った状況でした。
パスワードやユーザー名が正しいことも確認し、
各種プラグインやWordPress本体のバージョンは最新でした。
原因:WooCommerceとSiteGuardの相性
該当サイトに導入していたWordPressのプラグイン、WooCommerceとSiteGuardの相性の問題でした。
SiteGuardはログインフォームなどに画像認証を追加し、セキュリティを高めてくれるプラグインなのですが、WooCommerceが生成したフォームにはデフォルトでは画像認証が表示されません。
しかし、内部的には画像認証はフォームの送信に必須なので、何度やっても送信がうまくいかないということでした。
解決策:フォームにSiteGuardの画像認証を追加
解説
WooCommerceのマイアカウントのログインフォーム・パスワードリセットフォームにSiteGuardの画像認証を追加しました。
どうやるかというと、WordPressのフィルターフック機能を使います。
マイアカウントのログインフォーム・パスワードリセットフォームに機能を差し込みます。
WooCommerceの該当箇所のフックを確認します。(プラグインファイルのテンプレートファイルをみましょう)
- マイアカウントのログインフォームのフック:woocommerce_login_form_start
- パスワードリセットフォームのフック:woocommerce_lostpassword_form
が都合良さそうです。
最終的に下記コードをfunctions.phpに追記で解決しました。
functions.php
if ( isset( $siteguard_captcha ) ) {
add_filter( ‘woocommerce_login_form_start’, array( $siteguard_captcha, ‘handler_login_form’ ) );
add_filter( ‘woocommerce_lostpassword_form’, array( $siteguard_captcha, ‘handler_lostpassword_form’ ) );
}
たった4行のコードを追記で解決しました。よかった…
きちんと各種フォームが機能しています。
同様のことでお困りの際はぜひ参考にしてみてください。
▼関連記事
\シェアする/