概要
wc_session_expiration
フィルタは、WooCommerceでのセッションの有効期限を管理するために使用されます。このフィルタを利用することで、デフォルトのセッションタイムアウト時間を調整することができます。具体的には、以下のような機能を実装する際によく使われます。
- ショッピングカートの持続時間の調整
- セキュリティ強化のための短縮セッション
- ユーザーエクスペリエンス向上のための長期セッション
- 特定のユーザーグループ向けのカスタムセッション管理
- セッションタイムアウトの通知機能
- 複数サイト間での一貫したセッション管理
構文
add_filter( 'wc_session_expiration', 'custom_wc_session_expiration' );
function custom_wc_session_expiration( $expiration ) {
// カスタムのセッション有効期限を設定
return $expiration;
}
パラメータ
$expiration
: デフォルトのセッション有効期限(秒単位)
戻り値
- カスタマイズされたセッション有効期限(秒単位)
WooCommerceのバージョン
このフィルタは、WooCommerce 2.6以降で使用可能です。
WordPressのバージョン
WordPress 4.0以降で使用可能です。
サンプルコード
サンプルコード1: デフォルトの有効期限を120分に設定
add_filter( 'wc_session_expiration', 'custom_wc_session_expiration' );
function custom_wc_session_expiration( $expiration ) {
return 120 * MINUTE_IN_SECONDS; // 120分に設定
}
このコードでは、WooCommerceのセッション有効期限を120分に設定しています。デフォルトの値より長くなるため、カートを保持する時間が増えます。
サンプルコード2: 管理者用にセッションを無制限にする
add_filter( 'wc_session_expiration', 'admin_wc_session_expiration' );
function admin_wc_session_expiration( $expiration ) {
if ( current_user_can( 'administrator' ) ) {
return 0; // 無制限
}
return $expiration;
}
このコードでは、管理者のセッション有効期限を無制限にし、通常のユーザーにはデフォルトを適用します。
サンプルコード3: ショッピングカートのセッションを30分に設定
add_filter( 'wc_session_expiration', 'short_cart_session_expiration' );
function short_cart_session_expiration( $expiration ) {
return 30 * MINUTE_IN_SECONDS; // 30分に設定
}
このコードは、ショッピングカートのセッションを30分に短縮しています。無駄なカートの保持を防ぎます。
サンプルコード4: 特定のユーザーロール向けのセッション設定
add_filter( 'wc_session_expiration', 'custom_role_session_expiration' );
function custom_role_session_expiration( $expiration ) {
if ( current_user_can( 'premium_member' ) ) {
return 180 * MINUTE_IN_SECONDS; // プレミアムメンバーには180分
}
return $expiration;
}
このコードでは、「premium_member」ロールを持つユーザーのセッションを180分に設定します。
サンプルコード5: 最終アクティビティに基づくセッション管理
add_filter( 'wc_session_expiration', 'activity_based_session_expiration' );
function activity_based_session_expiration( $expiration ) {
if ( isset($_COOKIE['last_activity']) && time() - (int)$_COOKIE['last_activity'] < 300 ) {
return 60 * MINUTE_IN_SECONDS; // 最後のアクティビティから5分以内の場合は60分
}
return $expiration;
}
このコードは、ユーザーの最後のアクティビティから5分以内であれば、セッションを延長します。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | 〇 |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | |
get_header | |
wp_head |