12 月07
如何啟用wordpress的維護模式,暫停網站服務

wordpress-maintenance-mode03

一般我們在修改WordPress後台程式或是網頁時,通常都不希望被訪客看到正在修改的網頁半成品,或是擔心訪客勿用了網站內還未完成的功能,這時候可以考慮啟用WordPress Maintenance Mode(維護模式),當其維護模式啟動後訪客就只會在網站上看到一段《暫時因例行維護而無法存取。請稍後再來。》的簡單訊息,當維護模式移除後才會恢復正常。

而且進階板的WordPress維修模式還可以讓網站的管理者登入後台及預覽網站的畫面。想要啟動 WordPress Maintenance Mode(維護模式)可以有幾種方式:

第一種方法:不使用外掛,在WordPress網站的根目錄下使用【.maintenance】

在WordPress網站的根目錄下建立一個【.maintenance】的檔案,就如同【.htaccess】檔案一樣,然後在裡面擺放下面的程式碼。

<?php $upgrading = time(); ?>

如果你不曉得如何建立【.maintenance】檔案,可以先使用Windows內建的《記事本》新建一個有上述程式碼的檔案,隨便取一個檔名就可以了。
wordpress-maintenance-mode02

用FTP軟體上傳這個檔案到虛擬主機上的WordPress程式碼的根目錄,然後選取這個程式後按【F2】鍵就可以修改檔名,將其更名為【.maintenance】,請注意最前面有個逗點。

wordpress-maintenance-mode01

另外,還可以在 $upgrading 的等號後面放上時間,只要過了這個時間網站就會開放,只是它似乎只接受UNIX時間,而我們一般人是看不懂UNIX時間的,還好這裡有個網站可以幫我們把互換UNIX時間與我們看得懂得時間:http://www.onlineconversion.com/unix_time.htm

假如說我們要讓我們的網站在台灣時間2012年10月28日的下午02:55(UTC時間,台灣的時區為UTC+8)重新開啟,就要將其時間設為2012.10.28 06:45,UNIX時間為1351406700,因為WordPress會抓取時間後自動設定10分鐘之後開啟網站。

<?php $upgrading = 1351406700; ?>

目的雖然達到了,可是這樣的步驟卻有個致命的缺點,就是不論誰使用瀏覽器來到這個網頁都會出現《暫時因例行維護而無法存取。請稍後再來。》訊息,甚至連後台也無法登入,這個方法大概只能用來做幕後的FPT檔案備份或是回復使用吧!

啟動WordPress維修模式進階版

想要讓一般訪客只能看到暫時維修的訊息,讓網站擁有者仍然可以登入後台並且修改網頁元素,甚至可以測試網頁的效果,就需要對原來【.maintenance】的檔案做些修改,就是加入可以登入後台以及使用暫存(Cookie)判斷使用者是否已經登入,來判斷是否顯示維修模式的畫面。

只要把下面的程式碼整個複製到【.maintenance】檔案,取代原來的內容就可以了,當然,如果想要加入時間的限制也可以在 $upgrading 的等號後面放上UNIX時間。

<?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();
?>

文章參考網址:http://www.sivel.net/2009/10/wordpress-maintenance-mode-without-a-plugin-part-3/


網站架設 首頁

延伸閱讀:
為部落格文章加上色彩繽紛的蠟筆重點底線
WordPress外掛:WP-PostViews(文章流量統計)
何謂 Addon domain、 Parked domain、sub domain

Leave a Reply

Your email address will not be published. Required fields are marked *