WordPress 最為人愛用的特點之一就是安裝過程簡單,而且大部分的虛擬主機都能支援安裝!如果熟悉的話,幾分鐘時間就能完成。即使如此,WordPress 還因為功能強大,而且具有相當高的彈性,可透過程式碼來調整網站各項設定。

本文要介紹的 15 個設定,主要都在 WordPress 設定檔(wp-config.php)中,這個檔案如果在安裝過程是採用手動安裝,就一定會編輯過。以下就這十五個項目做更詳細的說明。

編輯你的 wp-config

當你下載 WordPress 後,wp-config.php 檔案並不會在安裝資料夾,你可以找到一個名為 wp-config-sample.php 的範例檔,將這個檔案另外複製後,再重新命名為 wp-config.php,然後加入基本的資料庫連線資訊(資料庫名稱、使用者名稱、密碼、網址及安全金鑰),這就是手動安裝的一個重要步驟。如果你的網站已經開始啟用,那麼你可以直接在網站根目錄找到這個檔案。

// ** MySQL 設定 - 您可以從主機服務提供商獲取相關資訊。 ** //
/** WordPress 的資料庫名稱,請更改 "database_name_here" */
define('DB_NAME', 'database_name_here');

/** MySQL 資料庫使用者名稱,請更改 "username_here" */
define('DB_USER', 'username_here');

/** MySQL 資料庫密碼,請更改 "password_here" */
define('DB_PASSWORD', 'password_here');

/** MySQL 主機位址 */
define('DB_HOST', 'localhost');

/** 建立資料表時預設的文字編碼 */
define('DB_CHARSET', 'utf8');

/** 資料庫對照型態。如果不確定請勿更改。 */
define('DB_COLLATE', 'utf8_unicode_ci');

如果要編輯 wp-config 請務必使用程式碼編輯器(例如:Sublime Text、Atom、Notepad++、Visual Studio Code 或 TextMate),請勿使用 Word 及其他類似編輯器(例如:Microsoft Office、Google Docs、LibreOffice),這些編輯器會因為檔案格式,造成檔案錯誤。

放置代碼片段的位置

在本文中,您可以找到15個程式碼片段,您可以使用這些程式碼片段來進行設定 wp-config.php 檔案。

在預設情況下,大多數本文中介紹的程式碼並沒有在 wp-config中,但有些則是被註記( 在php語法中,使用雙斜線 // 讓程式碼不產生作用 ),並無作用。如果要使用本文程式碼,需要將它們添加到起始 <?php 標記和程式碼註釋下方。增加這些客製化的設定時,除非將檔案中預設的設定註解去掉( 刪除該行程式碼前的 // 即可),否則請注意將它複製並新增到 <?php 標籤及代碼註解之後,或是 MySQL 設定值之前

wordpress預設wp-config.php的許多設定是註解狀態
wordpress預設wp-config.php的許多設定是註解狀態

1. 開啟 WP 偵錯模式(Debugger)

你可以在 wp-config 設定檔內開啟或關閉 WordPress 偵錯模式。下面要介紹的第一個程式碼預設情況下已經存在於 wp-config.php(在資料庫設定底下),但預設值為 false。如果要將除錯工具開啟,將設定值設定為 true

第二段程式碼是開啟前端除錯工具,允許你針對 CSS 和 JavaScript 程式進行除錯。只在開發中的網站下使用除錯工具。

# 開啟 PHP 除錯工具
define( 'WP_DEBUG', true );

# 開啟 CSS 和 JavaScript 除錯工具
define( 'SCRIPT_DEBUG', true );

2.更改 WordPress 網址

你可以在 WordPress 控制台的「設定 -> 一般」裡設定 WordPress 和網站網址。此外,你也可以在 wp-config 設定檔裡設定這些網址。

在 wp-config.php 裡定義 WP_SITEURL 和 WP_HOME 有兩個原因:

  1. 如果因為某些原因無法存取控制台,這個方法有可能解決問題。
  2. 減少網站載入時呼叫資料庫的次數(因為 wp-config 會覆蓋資料庫相同選項)。

WP_SITEURL 指定使用者連結到你網站的網址,WP_HOME 則是 WordPress 安裝目錄。如果你將 WordPress 安裝於根目錄(這是預設選項),那麼這兩個設定值會相同。

# 指定網站網址
define('WP_SITEURL', 'https://www.yourwebsite.com');

# 指定 WordPress 網址(安裝目錄)
define('WP_HOME', 'https://www.yourwebsite.com');

3. 自動清理回收桶

你可以讓 WordPress 在一段時間後自動清理你的回收桶。這個選項最小值為 0,在這情況下會停用垃圾桶功能。

# 在三天後清空回收桶
define( 'EMPTY_TRASH_DAYS', 3 );

4.啟用 WordPress 快取

你可以啟用 WordPress 內建快取功能,只要加入以下程式碼。大多數快取外掛,例如 W3 Total Cache 和 WP Super Cache 都會自動將這段程式碼加入 wp-config 設定。

# 啟用 WP 快取
define( 'WP_CACHE', true );

5.重新導向不存在的子網域和子目錄

有時候訪客會在網址列輸入一個不存在的子網域名稱或子目錄。你可以將這些訪客重新導向至正確的網域名稱,例如加入 NOBLOGREDIRECT 參數來重新導向到網站首頁。

# 重新導向不存在的子網域和子目錄
define( 'NOBLOGREDIRECT', 'http://www.yourwebsite.com' );

6.停用文章版本

WordPress 有內建的版本控制系統,意味著它可以儲存你建立的所有文章版本。一篇頻繁更新的文章可能會有 25-30 個文章版本,一段時間後這會佔用大量的資料庫空間。

使用 WP_POST_REVISIONS 參數可以設定文章版本的最大數量,或將此功能完全停用。

# 完全停用文章版本功能
define( 'WP_POST_REVISIONS', false );
 
# 只允許最多五個文章版本
define( 'WP_POST_REVISIONS', 5 );

7.啟用內建資料庫優化工具

WordPress 有內建的資料庫優化功能,你可以將以下程式碼加入 wp-config 來啟用它。

使用這個外掛請務必要小心,它只需要在進行資料庫優化時貼上,使用完畢後,請務必將這段程式碼註解掉。執行資料庫優化的畫面會被所有人看見(即使是沒有登入的訪客)。

# 啟用資料庫優化功能
define( 'WP_ALLOW_REPAIR', true );

8.停用自動更新

WordPress 預設情況下會執行自動背景更新,主要針對重要安全性更新翻譯內容。在確定你需要前,這項更新並不需要特別更改。

你可以透過 AUTOMATIC_UPDATER_DISABLED(所有更新)和 WP_AUTO_UPDATE_CORE(核心更新)將這項功能開啟或停用。

# 停用所有自動更新
define( 'AUTOMATIC_UPDATER_DISABLED', true );
 
# 停用所有核心更新
define( 'WP_AUTO_UPDATE_CORE', false );
 
# 啟用所有核心更新,包括跨版本更新及主要更新
define( 'WP_AUTO_UPDATE_CORE', true );
 
# 啟用核心更新,但只針對安全性更新(預設)
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

9.增加 PHP 記憶體限制

有時候你希望可以增加主機商對你網站的 PHP 記憶體限制,特別是出現可怕的「Allowed memory size of xxxxxx bytes exhausted」訊息。對網站的記憶體限制可以使用 WP_MEMORY_LIMIT 參數調整,WP_MAX_MEMORY_LIMIT 則針對控制台。

請注意,有些主機商不允許手動增加記憶體限制,遇到這種情形時請聯繫他們尋求協助。

# 為網站設定記憶體限制
define( 'WP_MEMORY_LIMIT', '96M' );
 
# 為控制台設定記憶體限制
define( 'WP_MAX_MEMORY_LIMIT', '128M' );

10.強制 SSL 模式登入

如果想增強網站安全性,你可以強制每次都使用 SSL 進行登入FORCE_SSL_ADMIN 參數可以針對登入頁面控制台開啟完整的 SSL 加密支援。

請注意,WordPress 4.0 後已經棄用 FORCE_SSL_LOGIN,現在必須使用 FORCE_SSL_ADMIN 。

# 強制 SSL 模式登入
define( 'FORCE_SSL_ADMIN', true );

11.停用外掛和佈景主題編輯/更新

管理員可以在 WordPress 控制台編輯外掛和佈景主題檔案。如果你使用 DISALLOW_FILE_EDIT 來停用外掛和佈景主題編輯器,有助於讓你的網站更安全。所以,若你的網站遭到入侵,駭客將沒有權限存取你的外掛和佈景主題檔案。

你也可以使用 DISALLOW_FILE_MODS 來停用外掛和佈景主題更新功能。這麼一來管理員就無法在控制台更新外掛和佈景主題。

DISALLOW_FILE_MODS 也會停用外掛及佈景主題編輯器,所以如果你啟用這項設定,就不用再額外加入 DISALLOW_FILE_EDIT

# 停用外掛和佈景主題編輯器
define( 'DISALLOW_FILE_EDIT', true );
 
# 停用外掛和佈景主題編輯器,加上外掛和佈景主題更新
define( 'DISALLOW_FILE_MODS', true );

12.刪除圖片編輯

每當你編輯圖片時,WordPress 會將它儲存成不同解析度大小的圖片。但是,如果你不想使用早期的圖片集,可以將 IMAGE_EDIT_OVERWRITE 設定為 true 來移除他們。

如你所見,當你編輯圖片時,較早的圖片將會被新圖片覆蓋,只有最新的圖片會保存於 wp-content 資料夾。

# 清理圖片編輯
define( 'IMAGE_EDIT_OVERWRITE', true );

13.停用未篩選的 HTML

這裡我要稍微解釋一下,什麼是「Unfiltered HTML」呢?以中文來說就是未被篩選的 HTML,為了有更好的安全性,WordPress 不允許等級較低的使用者帳戶(訂閱者、寫手或作者)發佈未篩選的 HTML 語法(這些語法在寫入編輯器、儲存後會自動消失),然而編審和系統管理員是允許使用這些標籤的。

如果你想將安全性提高,禁止更高等級的使用者使用未篩選的 HTML 語法,可以將以下程式碼加入到 wp-config 設定檔。

# 禁止編審和系統管理員使用未篩選的 HTML
define( 'DISALLOW_UNFILTERED_HTML', true );

14.設定自動儲存間隔

當您編輯文章時,WordPress會使用 Ajax 技術自動地定時幫您儲存文章草稿,這有點像word會做的事情,當電腦當機,你一定非常期望重新開機後,能夠回復正編輯到一半的檔案。這個功能讓你可以更改數值以延長或減少自動儲存的時間間隔,尤其是主機效能不佳時,經常性更新會讓操作變慢。

這個功能是在WordPress的wp-config 設定檔可以看到,預設未開啟,且儲存間隔為60秒,填入你覺得適當的數值即可。

/**
 * WordPress 自動儲存間隔
 *
 * 當您編輯文章時 WordPress 使用 Ajax 技術自動地定時幫您儲存文章草稿。
 * 您可更改數值以延長或減少自動儲存的時間間隔。
 * 預設儲存間隔為 60 秒。
 */
define('AUTOSAVE_INTERVAL', 120 );  // 單位:秒

15.變更wp-content目錄

wp-content文件夾存儲您的所有主題,插件,圖像等。為了更好的安全性,WordPress允許你移動wp-content目錄,一些專家認為它可以幫助加強WordPress的安全性。你可以將此文件夾移動到意外的位置,使駭客無法找到它。移動文件夾的內容後,您需要在wp-config.php文件中配置相同的內容。

您需要將以下代碼添加到wp-config.php文件中:

define('WP_CONTENT_DIR',$_SERVER['DOCUMENT_ROOT'].'/blog/wp-content' );
define('WP_CONTENT_URL','http://example/blog/wp-content');
define('WP_PLUGIN_DIR',$_SERVER['DOCUMENT_ROOT'].'/blog/wp-content/plugins' );
define('WP_PLUGIN_URL','http://example/blog/wp-content/plugins');

不要忘記用您自己的域名替換example.com。

如果您不想移動整個wp-content文件夾而只想移動外掛,則可以像wp-content一樣移動。外掛的文件夾放在plugins,完成移動plugins文件夾的內容後,您需要在wp-config.php文件中配置相同內容。

例如,如果您將插件文件夾移動到另一個文件夾 /content/wp-content/plugins

define('WP_PLUGIN_DIR',$_SERVER['DOCUMENT_ROOT'].'/content/wp-content/plugins');

此外,您需要更新wp-content URL。

define('WP_PLUGIN_URL','http://example.com/content/wp-content/plugins');

一些外掛開發人員有可能使用另一個變量。因此,最好也要更新它。

define('PLUGINDIR',$_SERVER ['DOCUMENT_ROOT'].'/content/wp-content/plugins');