8 個實用的 WordPress 程式碼(Code Snippets)

8 個實用的 WordPress 程式碼(Code Snippets)

網路上仍有一些 WordPress 網站尚未做任何修改。增強或修改網站功能最常見的作法是安裝 WordPress 外掛,然而功能也可以直接被加入佈景主題檔案中。事實上,大多數 WordPress 佈景主題包含 functions 檔案可以修改 WordPress 某些現有的功能。

原始碼片段(Code Snippets)是一小段的程式碼,可以直接加入到你的佈景主題檔案中。有時候它們包含了完整功能,其他時候它們可以用來修改一些現有功能。

在這篇文章裡八個實用且能增強 WordPress 功能的原始碼片段。已在預設的佈景主題 Twenty Fourteen 側試過所有的原始碼,皆能正常運作,請注意,如果你的佈景主題已經過大量修改(特別當它是一個框架),有些功能可能就無法正常使用。
1. 清空你的回收桶

為了安全起見,WordPress 會保存所有你刪除的文章、頁面和迴響;除非你進入回收桶功能,將它們永久刪除。回收桶的運作方式類似於 Windows 裡的資源回收桶。

WordPress 每隔三十天會自動清理你的回收桶,將以下程式碼加入你的 wp-config.php 檔案可以調整時間間隔(這個檔案位於你的 WordPress 根目錄):

define (‘EMPTY_TRASH_DAYS’, 7);
如果你想進一步最佳化你的資料庫,避免將不要的項目儲存在資料庫裡,你可以透過以下的程式碼來停用回收桶功能,一樣是加入 wp-config.php 檔案:

define (‘EMPTY_TRASH_DAYS’, 0);
2. 減少文章版本

WordPress 文章版本功能(Revision)會在使用者每次儲存文章和頁面草稿時自動產生一個版本。這個功能對於部落客來說很重要,因為它可以隨時返回到早先的草稿,即便是你在編輯時發生任何錯誤。

不幸的是,WordPress 預設的文章版本並沒有總量限制,過多的草稿將會佔用你資料庫許多容量。這也意味著當長篇大論被儲存一百次時,也會佔用資料表一百行的空間。

為了解決這個問題,你可以將以下程式碼加入 wp-config.php 來減少文章版本的數量,給它一個合理的數量:

define( ‘WP_POST_REVISIONS’, 3 );
如果你希望完全停用文章版本功能,只需要將以下程式碼加入 wp-config.php 檔案:

define( ‘WP_POST_REVISIONS’, false );

此外,WordPress 會每 60 秒自動儲存你的文章和頁面,透過以下程式碼可以修改自動儲存的時間間隔,一樣是把它加入你的 wp-config.php 檔案:

define( ‘AUTOSAVE_INTERVAL’, 160 ); // 秒數

3. 搬移你的 WP-Content 目錄

wp-content 目錄包含你的佈景主題、外掛和上傳的圖片。某些外掛,例如快取外掛,也會使用 wp-content 目錄來儲存資料。

有鑑於此,wp-content 目錄時常成為黑客下手的目標,特別是插入惡意程式碼至你的佈景主題。你可以將 wp-content 目錄搬移到其他地方,使它更難以被找到。

如果你想要簡單地將 wp-content 目錄移動到其他路徑,你可以將以下程式碼加入你的 wp-config.php 檔案:

* 注意:wp-content 目錄結尾沒有斜線。

define( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/newlocation/wp-content’ );
如果你願意,你也可以使用 URL 來定義新的路徑:

define( ‘WP_CONTENT_URL’, ‘http://www.yourwebsite.com/newlocation/wp-content’ );
WordPress 也允許你重新命名你的 wp-content 目錄:

define (‘WP_CONTENT_FOLDERNAME’, ‘newfoldername’);
重新命名你的 wp-content 目錄可以使 WordPress 網站更加安全,但很不幸的是並非 100% 可行,因為很多 WordPress 外掛開發者已將 “wp-content” 路徑寫死在外掛的程式碼裡。如果安全是首要目標,那還是值得一試的,但必須知道有些外掛的程式碼可能必須要手動更新(而且必須在每次更新外掛時重新做一次)。
4. 將作者頁面鏈結重新導向「關於」頁面

作者彙整頁面鏈結會列出該作者曾經寫過的所有文章,並顯示於同一個頁面裡。有時候作者的「關於我」也會一併顯示於頁面頂部。

如果你運行的是單人部落格,那麼無須使用作者頁面來顯示和分類或彙整頁面相同的內容。更好的作法是直接把作者頁面鏈結連結到你的「關於」頁面。

你可以將以下程式碼加入佈景主題的 functions.php 檔案:

add_filter( ‘author_link’, ‘my_author_link’ );
function my_author_link() {
return home_url( ‘about’ );
}

5. 當搜尋結果只有一篇文章時自動連到文章

每當執行搜尋時,WordPress 會列出所有與搜尋關鍵字相關的文章和頁面列表。使用者可以點選他們想閱讀的內容。

如果搜尋結果只有一個,那搜尋結果頁面是多餘的。乾脆直接把讀者重新導向至該篇文章。

你可以將以下程式碼加入佈景主題的 functions.php 檔案:

add_action(‘template_redirect’, ‘redirect_single_post’);
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
wp_redirect( get_permalink( $wp_query->posts[‘0’]->ID ) );
exit;
}
}
}
6. 將頁面從 WordPress 搜尋結果排除

典型的部落格可能有數百篇甚至是數千篇的文章,但只有少數幾個頁面。這些頁面往往是你網站的重要內容,例如關於頁面或是聯繫頁面;總會顯示於側邊欄或是網頁底部。因此,在搜尋結果裡可以排除頁面,因為這可能不是讀者想要搜尋的內容。

將頁面從搜尋結果移除也是對訪客隱藏私人頁面的方法。舉例來說,你的郵件訂閱頁面或你的電子書下載頁面。

將以下程式碼加入佈景主題的 functions.php 檔案,搜尋結果就只會顯示文章:

function filter_search($query) {
if ($query->is_search) {
$query->set(‘post_type’, ‘post’);
}
return $query;
}
add_filter(‘pre_get_posts’, ‘filter_search’);

7. 從你的迴響表單移除網址欄位

我最近提到如何減少 WordPress 垃圾留言。這裡提供另外一個技巧,你可以用它來減少人工垃圾迴響:移除網址欄位。這麼做將可以大幅降低部落格收到品質低落的迴響。

要移除網址欄位,你必須做的是將以下程式碼加入佈景主題的 functions.php 檔案:

function remove_comment_fields($fields) {
unset($fields[‘url’]);
return $fields;
}
add_filter(‘comment_form_default_fields’,’remove_comment_fields’);
8. 為迴響內容設定最少字數限制

另一個惱人的事情是有些迴響者會留下簡短、毫無意義的回覆。例如 “謝謝”、”好文”和”真棒!”之類的內容,這些內容對於討論並沒有幫助。如果你不希望從你的迴響表單移除網址欄位,你也許可以為迴響內容設定最少字數限制。

你可以透過將以下程式碼加入佈景主題的 functions.php 檔案來實現這項功能。請務必將 $minimalCommentLength 後方的數字改為你想自訂的最少字元數。(編按:不確定中文有沒有問題。)

add_filter( ‘preprocess_comment’, ‘minimal_comment_length’ );
function minimal_comment_length( $commentdata ) {
$minimalCommentLength = 20;
if ( strlen( trim( $commentdata[‘comment_content’] ) ) < $minimalCommentLength ){
wp_die( ‘所有留言必須大於 ‘ . $minimalCommentLength . ‘ 個字元長度。’ );
}
return $commentdata;
}