WordPress具有处理维护模式的嵌入式功能。
当您从WP dashboard升级插件或WordPress core时,WordPress进入维护模式:它尝试加载一个名为maintenance.php
位于内容文件夹中(通常为/wp-content
), 如果该文件不存在,WP将显示默认消息。
我建议您使用该文件,这样您就可以对手动触发的维护和WordPress处理的维护保持一致。
如何首先创建maintenance.php
归档并将所需内容放在那里。对于样式,我建议您将CSS放入文件本身,使用<style>
标签一般来说,这不是一个好建议,但在这种情况下,当没有加载主题(主题可能正在升级,因此不可靠)时,它可以为WordPress处理的维护模式使用文件。
保存刚刚在内容文件夹中创建的文件(通常是/wp-content
).
在您的functions.php
放置:
add_action( \'wp_loaded\', function() {
global $pagenow;
if(
defined( \'IN_MAINTENANCE\' )
&& IN_MAINTENANCE
&& $pagenow !== \'wp-login.php\'
&& ! is_user_logged_in()
) {
header( \'HTTP/1.1 Service Unavailable\', true, 503 );
header( \'Content-Type: text/html; charset=utf-8\' );
header( \'Retry-After: 3600\' );
if ( file_exists( WP_CONTENT_DIR . \'/maintenance.php\' ) ) {
require_once( WP_CONTENT_DIR . \'/maintenance.php\' );
}
die();
}
});
此代码将检查一个常量(请参见下一点),如果用户未登录,请加载在第#1点创建的文件并退出。
如果只允许具有特定功能的用户,请使用current_user_can(\'capability_to_allow\')
而不是is_user_logged_in()
. 看见Codex 了解更多信息。
也许你可以添加到maintenance.php
登录页面的链接;这样,未登录的用户就可以单击它,而无需在地址栏中手动输入登录URL。
如果您使用的是第三方开发的主题,请使用child theme; 这样,您就可以安全地更新主题,而不会丢失所做的更改。
要启用维护模式,请打开wp_config.php
然后放在那里:
define(\'IN_MAINTENANCE\', true);
之后,当您准备再次公开站点时,只需删除该行或更改
true
到
false
以便于重新启用。