问题描述
有没有办法使 Wordpress 的”Remember Me” 登录复选框工作了很长一段时间,像一年?目前我认为这只能工作几天或者一个星期,通常我不记得了。
最佳解决方案
I think I’ll wait for such a plugin
将此代码保存在名为 set-cookie-expire.php
的文件中,并将其上传到您的插件文件夹。
该插件可以让您设置 Cookie 在 WordPress 设置管理员中过期的时间 (以天为单位) 。
<?php
/**
* Plugin Name: Set Cookie Expire
* Plugin URI: http://wordpress.stackexchange.com/a/11991/1685
* Version: 0.1
* Description: Set the expire time for cookies in your <a href="options-general.php">general settings</a>.
* Author: WordPress Development Stack Exchange
* Author URI: http://wordpress.stackexchange.com/a/11991/1685
*/
/**
* Set our user-specified expire times.
*
* @param int $default
* @param int $user_id
* @param bool $remember
* @return int
*/
function wpse_11979_set_cookie_expire( $default, $user_id, $remember ) {
$days = get_option( $remember ? 'remember_cookie_expire' : 'normal_cookie_expire' );
if ( $days === false )
$days = $remember ? 14 : 2;
else
$days = ( int ) $days;
return $days * DAY_IN_SECONDS;
}
add_filter( 'auth_cookie_expiration', 'wpse_11979_set_cookie_expire', 10, 3 );
/**
* Register settings.
*/
function wpse_11979_set_cookie_expire_settings() {
$settings = array(
'normal_cookie_expire' => 'Normal Cookie Expire',
'remember_cookie_expire' => 'Remember Cookie Expire',
);
foreach ( $settings as $id => $label ) {
add_settings_field(
$id,
$label,
'wpse_11979_set_cookie_expire_field',
'general',
'default',
array(
'label_for' => $id,
)
);
register_setting( 'general', $id, 'absint' );
}
}
add_action( 'admin_init', 'wpse_11979_set_cookie_expire_settings' );
/**
* Render settings field.
*
* @param array $args
*/
function wpse_11979_set_cookie_expire_field( $args ) {
$id = $args['label_for'];
printf(
'<input id="%2$s" type="text" name="%2$s" value="%1$d" class="small-text" /> days',
( int ) get_option( $id, $id === 'normal_cookie_expire' ? 2 : 14 ),
$id
);
}
次佳解决方案
WordPress 版本超过 2.4 存储两个 cookie,根据 Codex 设置在两周内到期。根据此 blog post(在 Codex 中链接),您可以在 WordPress 的 wp-includes
文件夹中的 pluggable.php
文件中编辑 wp_set_auth_cookie
功能。确切的行将取决于您正在使用的 Wordpress 版本。
最好是编写或使用 plug-in 代替 wp_set_auth_cookie 功能。如果您编辑 Wordpress 核心文件,如果您使用 auto-updater 或手动安装 Wordpress 并复制文件,而不保留您所做的任何更改,它们将被替换。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。