web-dev-qa-db-ja.com

WordPressの認証Cookieの有効期限を設定する

WordPressのCookieの有効期限を設定しようとしていますが、何らかの理由で機能していません。私はここに行きました:

https://developer.wordpress.org/reference/hooks/auth_cookie_expiration/

そして、ドキュメントに基づいて以下のフックを置きます:

function init() {
    // ...
    $expiration = 60;
    apply_filters( 'auth_cookie_expiration', $expiration );
}

このコードは私のプラグインのコンストラクタのフックから呼び出されます。

add_action( 'init', array( $this, 'init' ) );

そして私はそれが動作することを確認しました。

私はこれが60秒で期限が切れるクッキーを作り出すと予想しました、しかしそれはしません。代わりに、48時間の標準有効期限を設定します(WPのデフォルト)。これは、ユーザーが実際にログインしてもこの有効期限が作成されず、後でこの関数を実行しても効果がないためと考えられます。私はまだそれを動作させる方法を考え出していません。任意の助けをいただければ幸いです。

1
Ynhockey

フィルタコールバックを追加していないことに注意してください。

apply_filters( 'auth_cookie_expiration', $expiration );

代わりに使用してください:

add_filter( 'auth_cookie_expiration', $callback, 10, 3 );

$callbackは有効期限を変更する適切なフィルタコールバックです。

これが例です

add_filter( 'auth_cookie_expiration', function( $length, $user_id, $remember ) {
    return $length; // adjust this to your needs.
}, 10, 3 );

または現在のクラス設定に合わせて:

add_filter( 'auth_cookie_expiration', [ $this, 'set_auth_cookie_expiration' ], 10, 3 );

ここでset_auth_cookie_expiration()は適切なメソッドです。

public function set_auth_cookie_expiration ( $length, $user_id, $remember ) 
{
    return $length; // adjust this to your needs.
}
1
birgire