質問: ### 前提・実現したいこと WooCommerceを使ってECサイトを作成しています。 フロントページはログインor非ログインにより、CSSでコンテンツを出し分けています。 ユーザーがログイン後に一定時間経過しセッションが切れた場合、表示コンテンツが多少変わるだけなので、ログアウトしていることに気づきません。 (特に、スマホのChromeブラウザだと30分程でセッションが切れてしまう) そのため、ログアウトした場合に自動的に特定のページ(ログインページ)にリダイレクトさせたいです。 (或いはChromeでセッションが切れないようにできれば一番いいのですが、、、) ### 試したこと、発生している問題 ログアウトした際に特定の権限のユーザーがリダイレクトされるよう、function.phpにコードを追加しました。 しかし、セッション切れ後もリダイレクトされず、原因が分からないため質問させていただきました。 ぜひアドバイスをいただけると非常に助かります。 ### 該当のソースコード ``` function logout_redirect() { if ( current_user_can( '特定の権限' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) { wp_safe_redirect( 'リダイレクト先URL', 301 ); exit; } } add_action( 'wp_logout', 'logout_redirect' ); ```
回答: wp_logoutは明示的にログアウト処理を実施したときにコールされるフックです。 セッション切れの場合はコールされないのでは。 initかwpあたりをフックしたほうがいいかと思います。 また、current_user_canもセッション切れ(ログアウト状態)であればfalseに なると思いますので条件の見直しも必要です。 is_user_logged_inの方があっていると思います。 >特に、スマホのChromeブラウザだと30分程でセッションが切れてしまう これはセッション管理がどのようになされているか分からないので何とも言えないです。