以编程方式切换页面模板?

时间:2011-06-01 作者:Mild Fuzz

我想建立一个非常简单的切换,让我的网站进入维护模式。为此,我想添加一个管理区域来定义一个模板,即维护页面,并允许该页面在维护模式打开时覆盖数据库定义的模板。

如何在不影响数据库的情况下更改为每个页面调用的主题模板?

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

您可以使用template_redirect php的操作挂钩使用选项数据库中的一个简单选项包括维护模式模板文件。

打开维护模式时,添加选项,例如:

add_option(\'maintenance_mode_on\');
然后使用此代码检查是否设置了该选项,如果设置了,则重定向到所需的模板文件:

function custom_maintenance_mode_template_redirect() {
    global $wp;
    if(get_option(\'maintenance_mode_on\')){
        status_header(200); // a 404 code will not be returned in the HTTP headers if the page does not exists

        include(TEMPLATEPATH . "/Custom_template.php"); // include the corresponding template
        die();
    }
}
add_action( \'template_redirect\', \'custom_maintenance_mode_template_redirect\' );
然后,当您关闭维护模式时,删除该选项:

delete_option(\'maintenance_mode_on\');
如果要影响body_class() 您可以使用body_class 过滤器挂钩:

function custom_body_class($classes){
    if(get_option(\'maintenance_mode_on\')){
            $n_classes[] = "maintenance";
        return $n_classes;
    } else {
        return $classes;
    }
}

add_filter(\'body_class\', \'custom_body_class\');
这将把body\\u class()更改为outputmaintenance 打开维护模式时。

结束

相关推荐

“自动WordPress更新无法完成-请立即重新尝试更新”--但没有.Maintenance文件

在自动升级失败后,我正在尝试手动将wordpress升级到最新版本(3.0.3)。升级后,一切正常,除了在我的管理区顶部有一条令人不快的消息:自动WordPress更新未能完成-请立即重试更新我在互联网上搜索,每个人都说这是因为.maintenance 文件位于Wordpress根文件夹中,是自动升级或手动升级失败的遗留文件。在第二种情况下,只需删除该文件,一切都会很好。但我搜索我的wordpress安装目录,没有这样的文件。知道是什么导致了这个问题吗?