维护模式,不包括站点管理员

时间:2021-11-12 作者:Wiliam Jose Koester

我想在不使用插件的情况下将网站设置为维护模式,以便任何访问该网站的人who is not a site admin 将看到一个;抱歉,网站正在维护中”;页

我创建了一个。维护文件,代码如下:

<?php
function is_user_logged_in() {
    $loggedin = false;
    foreach ( (array) $_COOKIE as $cookie => $value ) {
        if ( stristr($cookie, \'wordpress_logged_in_\') )
            $loggedin = true;
    }
    return $loggedin;
}
if ( ! stristr($_SERVER[\'REQUEST_URI\'], \'/wp-admin\') && 
     ! stristr($_SERVER[\'REQUEST_URI\'], \'/wp-login.php\') && 
     ! is_user_logged_in() )
    $upgrading = time();
?>
我还定制了一个维护。包含页面内容的php文件,并将其安装在wp content中。

这样做效果很好,但问题是任何已经登录该网站的人都可以浏览该网站。由于这是一个电子商务网站,客户通常会安装cookie,但我不希望他们在维护该网站时能够使用该网站。

我不是开发人员,所以我不知道如何修复上面的代码,以便只让管理员绕过维护模式。

有人能帮我吗?

Edit:

我将在黑色星期五开始时使用它来更新商店价格,我的目标是在人们访问网站时加载尽可能少的WordPress,以免服务器过载。在前几年,该网站在尝试激活促销活动时没有很好地处理大量同时出现的用户,今年,除了其他行动之外,我想防止不断刷新页面的人影响WordPress的性能。

在我看来。维护文件方法使用户只需加载很少的WordPress资源。如果我错了,请纠正我。

1 个回复
SO网友:tiago calado

只有已经登录的管理员才能访问该网站,其他人无权访问。只需将$url变量更改为您所需的维护页面所在的url。

function wp_maintenance_mode() {
if (!current_user_can(\'administrator\')) {
   $url = "your maintenance file url you want to display while is on maintenance";
   wp_redirect( $url );
   exit;
}
add_action(\'get_header\', \'wp_maintenance_mode\');
如果您只想显示消息,只需删除重定向并回显一些内容

function wp_maintenance_mode() {
   if (!current_user_can(\'administrator\')) {
      wp_die(\'<h1>Under Maintenance</h1><br />Website under planned maintenance. Please check back later.\');
   }
}
add_action(\'get_header\', \'wp_maintenance_mode\');

相关推荐

Wp-admin中文本的行高

我管理几个不同的wordpress网站,这些网站有不同的主题、插件和其他特性。我注意到的一件事是,对于其中一些网站,管理区域中文本的行距非常狭窄,就像发生了某种CSS错误一样。而对于其他站点,等效文本显示的标准行高度大约为1.5左右。有没有办法让没有显示此标准线高度的站点这样做?你可以在这两幅图中看到我的意思-第一幅没有标准线高度,第二幅有标准线高度。感谢您的帮助!-----(编辑以澄清:我不需要找出要使用什么CSS hack来正确显示文本-理想情况下,我想找出导致此错误发生的加载是什么。)