私は、Wordpressが認証クッキーを処理するという、他の点では非常に安全でない方法を回避しようとしています。つまり、メンバーシップサイトを構築した場合に限り、2週間でCookieの有効期限が切れるのは当然のことですが、同時に、ユーザーがログインしている間に15分で有効期限が切れるのは面倒です。
私は広範囲にわたって検索とテストを行い、Wordpressでこれを取り巻くやや複雑なコードフォレストをpluggable.php
フォルダの下のwp-includes
ファイルに絞り込み、652行目にwp_set_auth_cookie
関数を見つけました。これで時間を変更することができますが、上記のように、ユーザーの最後のアクティビティではなく、ログイン時間に固定されています。
この関数またはこれを使ったwp_signon
関数を私のヘッダに追加しようとしましたが、うまくいきませんでした。
どんなプラグインやフック、あるいはあなたがそれについて考えることができる何かはこれで私を助けますか?
事前にご協力いただきありがとうございます。
EDIT(2013年6月6日):
テンプレートのfunctions.php
ファイルで次のコードを試してみましたが、ページをリロードするとログアウトされるだけで、実際に認証Cookieが更新されることはありません。問題は引数($userinnow, $remember, $secure
)にあるかもしれません、ところで、$userinnow
を除いて、私は/ useを必要としません。
/* Renew cookie at every page load */
function renew_wp_cookie() {
global $current_user;
get_currentuserinfo();
$userinnow = $current_user->user_login;
if (is_user_logged_in()) {
wp_set_auth_cookie($userinnow, $remember, $secure);
}
else wp_clear_auth_cookie();
}
add_action('init', 'renew_wp_cookie');
あなたはwp_set_auth_cookie()
を書き直す必要はありません、それはあなたがクッキーの有効期限を変更することを可能にします:
add_filter( 'auth_cookie_expiration', 'wpse101378_change_expire_time', 3 );
function wpse101378_change_expire_time( $expire, $user_id, $remember ){
//The $remember variable indicates whether the user has elected
//to be 'remembered'.
//By default, if true, WP sets expire to 14 days if false, 2 days
//$expire is time in seconds
return 24*60*60;
}
現在のクッキーをクリアしたい場合は、wp_clear_auth_cookie()
を使用できます( source を参照)。