これを簡単にする必要があります。1人のユーザー(my-user
)を1年間ログインさせ続けるにはどうすればよいですか? (私はdevツールコンソールでログインクッキーをチェックしています)。
更新8/16/15
これは動作します:
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );
function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
if( 1 === $user_id )
$ttl = YEAR_IN_SECONDS;
return $ttl;
}
そしてarrayオプションを使うと、これは複数のユーザに有効です。
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );
function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
if( in_array( $user_id, array( 1, 2 ) ) )
$ttl = YEAR_IN_SECONDS;
return $ttl;
}
Update 8/12/15:Re:以下のRarst's answer:get_currentuserinfo
はプラガブルなので、この中でapply_filters
をどう使うかコンテキスト?
下記のこの関数が単純なプラグインで使用されていると、Call to undefined function get_currentuserinfo()
エラーが発生します。
global $user_login;
get_currentuserinfo();
if ($user_login == "my-user") {
function keep_me_logged_in_for_1_year( $expirein ) {
return 31556926; // 1 year in seconds
}
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );
}
しかし、Codexの使用法はglobal
を使用します。 https://codex.wordpress.org/Function_Reference/get_currentuserinfo
これは、もちろん、1年間すべてのユーザーをログインさせたままにします。
function keep_me_logged_in_for_1_year( $expirein ) {
return 31556926; // 1 year in seconds
}
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year' );
get_currentuserinfo()
はプラグイン可能な関数です。プラグインのロード段階では利用できません。
それ以外は、条件付きでフィルタを追加するのではなく、フィルタによって提供されたデータを使用します。フィルタ呼び出しを見てみましょう。
apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember )
$user_id
は2番目の引数として提供されています。あなたは単にあなたのフィルタにそれをリッスンさせ、それに条件付きでreturnを修正させるだけです。
これはテストされていない例です。
add_filter( 'auth_cookie_expiration', 'keep_me_logged_in_for_1_year', 10, 3 );
function keep_me_logged_in_for_1_year( $ttl, $user_id, $remember ) {
if( 123 === $user_id )
$ttl = YEAR_IN_SECONDS;
return $ttl;
}