Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

關閉 WordPress 的 Feed 功能

最近客戶在網站上線之後,用 site:domain.com 的方式去搜尋自己的網站內容,發現 /feed 也被收錄在索引中,因此聯絡我們希望我們移除掉。

最根本的解決方法,是使用 sitemap 的方式,讓它根本不要被索引到,就可以解決客戶的問題了。不過因為客戶很「貼心」的準備表格,把被索引的頁面通通整理出來。為了不想要又被說怎麼點進去還是看到 feed 的 xml 格式文件,所以順手學了一下怎麼停用這個功能。

使用原理

  • 把 WordPress 裡面與 feed 有關的 hook/action 停用
  • 把 wp_head 裡面與 feed 有關的 hook/filter 停用
  • 把 feed 頁面直接 301 redirect 到上一頁

程式碼參考

/**
* Reference: https://kinsta.com/knowledgebase/wordpress-disable-rss-feed/
*/
function itsme_disable_feed() {
 wp_die( __( 'No feed available, please visit the <a href="'. esc_url( home_url( '/' ) ) .'" rel="nofollow">homepage</a>!' ) );
}
add_action('do_feed', 'itsme_disable_feed', 1);
add_action('do_feed_rdf', 'itsme_disable_feed', 1);
add_action('do_feed_rss', 'itsme_disable_feed', 1);
add_action('do_feed_rss2', 'itsme_disable_feed', 1);
add_action('do_feed_atom', 'itsme_disable_feed', 1);
add_action('do_feed_rss2_comments', 'itsme_disable_feed', 1);
add_action('do_feed_atom_comments', 'itsme_disable_feed', 1);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );

建立函式 itsme_disable_feed,在使用者 (或是 feed 閱讀器) 要求連結的時候回傳已停用的資料。

remove_action 的目的是在將 wp_head 中自動生成的 feed 連結移除。

外掛設定

在操作上使用的是 Redirection 這套外掛。利用正則表達式將連往 feed 的連結,直接導回上層頁面中。

  • 來源網址:/(.*)/feed
  • 目標網址:/$1
Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料