问题描述
有没有办法从主题文件夹添加自定义维护页面?
我有激活维护模式的代码,但我无法得到样式..
function activate_maintenance_mode() {
if ( !(current_user_can( 'administrator' ) || current_user_can( 'super admin' ))) {
wp_die(
'<h1>Website Under Maintenance</h1><p>Hi, our Website is currently undergoing scheduled maintenance.
Please check back very soon.<br /><strong>Sorry for the inconvenience!</strong></p>', 'Maintenance Mode');
}
}
add_action('get_header', 'activate_maintenance_mode');
先谢谢,尼古拉。
最佳解决方案
当 WordPress 进入维护模式时,会在执行维护时将一个名为.maintenance
的文件添加到根目录中,之后删除。您可以在主题的 functions.php
中编写一个功能,用于检查此文件,并从主题加载自定义维护页面。
if ( ! function_exists( 'wpse84987_maintenance_mode' ) ) {
function wpse84987_maintenance_mode() {
if ( file_exists( ABSPATH . '.maintenance' ) ) {
include_once get_stylesheet_directory() . '/maintenance.php';
die();
}
}
add_action( 'wp', 'wpse84987_maintenance_mode' );
}
将您的维护内容放在您的主题文件夹中的 maintenance.php
页面中,您将全部设置为您想要的样式。
如果使用 wp_die
功能,您将得到灰色背景上的标准白色框。这样,您可以像任何其他主题页面一样为维护页面设置样式。
更新:您还可以通过将 maintenance.php
添加到 wp-content
目录 (或者将 WP_CONTENT_DIR
设置为指向的位置) 作为 drop-in 插件,从而在主题之外执行此操作。当 WP 从 wp_maintenance()
内部检查维护模式时,它将寻找该文件并将其加载 (如果存在),或者如果不存在则加载它。如果站点未处于维护模式,或者存在 10 分钟以上,即使站点在技术上仍处于维护模式,’maintenance.php’ 将无法加载。 WordPress 4.6 introduces the ‘enable_maintenance_mode’ filter,它可以被 (ab) 使用,像 wp-cli
这样的工具强制检查 drop-in,并允许您从维护文件运行 CLI 命令。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。