问题描述

有没有办法从主题文件夹添加自定义维护页面?

我有激活维护模式的代码,但我无法得到样式..

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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。