我想在不使用插件的情况下将网站设置为维护模式,以便任何访问该网站的人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资源。如果我错了,请纠正我。
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\');