徹底關閉 Wordpress RSS 的功能

筆者不是 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:

  1. /**
  2.  * disable feed
  3.  */
  4. function fb_disable_feed() {
  5.         wp_die( __(‘No feed available,please visit our <a href="’. get_bloginfo(‘url’) .‘">homepage</a>!’) );
  6. }
  7.  
  8. add_action(‘do_feed’, ‘fb_disable_feed’, 1);
  9. add_action(‘do_feed_rdf’, ‘fb_disable_feed’, 1);
  10. add_action(‘do_feed_rss’, ‘fb_disable_feed’, 1);
  11. add_action(‘do_feed_rss2′, ‘fb_disable_feed’, 1);
  12. 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) 內以下的代碼 (如有)

  1. <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo(‘rss2_url’); ?>" />
  2. <link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo(‘rss_url’); ?>" />
  3. <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 上加入:

  1. remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );

這樣就可以完全刪除 RSS 的連結了。

分享:

歡迎發表回應或 訂閱本站網誌

留言

未有留言

寫下留言

(必須)

(必須,不會顯示)