讓 WordPress 留言能顯示 HTML 標籤

WordPress 預設留言支援 HTML 標籤,也就是會自動讀取 HTML 的樣式,但技術型部落格會需要透過留言討論 HTML 語法,我們會希望輸入<h1>,就出來<h1>,不要吃掉語法,讓「樣式」出現在留言中。

如果你跟我一樣有這困擾,希望在留言打 HTML 標籤,就會出現 HTML 標籤的話,不妨參考以下語法。

首先打開佈景主題的 functions.php,在?>的上面,輸入以下語法(我有做簡單的註解,有興趣的朋友可以自行研究):

// 讓迴響不支援 HTML TAG
// 當有留言時,會呼叫 function
function custom_comment_post($incoming_comment) {
    // 將留言內容,用 htmlspecialchars() 轉換字符 & 用 str_replace() 取代字符
    $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
    // 搜尋 $incoming_comment, 將單引號取代為 &apos ,以免 WordPress 視為 SPAM
    $incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] );
    //回傳資料
    return($incoming_comment);
}

//留言準備要顯示前,會呼叫 function
function custom_comment_display($comment_to_display) {
    //將單引號取代回來
    $comment_to_display = str_replace( '&apos;', "'", $comment_to_display );
    return $comment_to_display;
}

add_filter('preprocess_comment', 'custom_comment_post', '', 1);
add_filter('comment_text', 'custom_comment_display', '', 1);
add_filter('comment_text_rss', 'custom_comment_display', '', 1);
add_filter('comment_excerpt', 'custom_comment_display', '', 1);

最後再存檔上傳,留言就會顯示 HTML 標籤囉!請參考示意圖:

參考文章
@Disable HTML in WordPress Comments / WP insite