筆者不是 RSS is dead (大意是 RSS 的功能已被 Twitter 取代,因後者更快) 的支持者,RSS 仍是我日常獲取資訊的主要渠道。不過若把 WordPress 作為網站 CMS 的情況下,RSS 則並非必要。要關閉 WordPress 的 RSS 功能,最好要做到「內外兼顧」。
關閉 RSS feed 輸出功能
首先從內部入手,令 WordPress 不會輸出 RSS feed。WPengineer 教大家使用 WordPress 的 hook ,指示系統取消 RSS feed 輸出,辦法是在 template 的 functions.php 檔案 (如果 template 沒有這檔案可以自行創建),加入以下 function:
-
/**
-
* disable feed
-
*/
-
function fb_disable_feed() {
-
wp_die( __(‘No feed available,please visit our <a href="’. get_bloginfo(‘url’) .‘">homepage</a>!’) );
-
}
-
-
add_action(‘do_feed’, ‘fb_disable_feed’, 1);
-
add_action(‘do_feed_rdf’, ‘fb_disable_feed’, 1);
-
add_action(‘do_feed_rss’, ‘fb_disable_feed’, 1);
-
add_action(‘do_feed_rss2′, ‘fb_disable_feed’, 1);
-
add_action(‘do_feed_atom’, ‘fb_disable_feed’, 1);
由於這方法是在 template 檔案上實行,因此必須謹記當改用另一個 template 時,必須在新 template 中加入相同 function。另外,template 內 RSS 相關的連結也需要去除。
刪除 Template 內所有 RSS feed 的連結
網頁上顯示的 RSS feed 連結相信大家也可輕易移除,不過有一些「隱藏」的連結,則會透過瀏覽器而被發現,例如 Firefox 就有 RSS auto-discovery 功能,雖然開啟這連結也只會顯示錯誤訊息,但最好還是把這些「隱藏」連結一併移除。
首先要刪除 template (通常是 header.php) 內以下的代碼 (如有)
-
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo(‘rss2_url’); ?>" />
-
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo(‘rss_url’); ?>" />
-
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo(‘atom_url’); ?>" />
某些 template 使用 wp_head() 來加入網頁 head tags 的內容,如果刪除 template 中的 wp_head() 則會同時刪除其他有用的資訊。其實可以用上述關閉 RSS feed 輸出的方法,來設定 wp_head() 令其只會不輸出 RSS feed links 但保留其他資訊,方法是在 functions.php 上加入:
-
remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );
這樣就可以完全刪除 RSS 的連結了。



留言
寫下留言