実はこの週末、重い腰を上げて今までテーマのオレオレfunctions.phpに入っていたコードを汎用化して公式ディレクトリへプラグイン申請する作業を進めていました。
そのうちの1つに「head内からコメントフィードだけを消す」というプラグインがあったんですが、これをなんとか申請に足るものにしたいと悩んでいるうち、4.4でフックが増えるという情報に行き当たりました。
実は現在、WordPressのフィードURLをhead内に出力するための関数として、サイト全体のフィードを出力するfeed_linksと、カテゴリー別やタグ別など特定の条件に応じたフィードを出力するfeed_links_extraの2種類があります。
しかし、feed_linksには「投稿フィードだけ」「コメントフィードだけ」に作用するフックが用意されておらず、一旦remove_actionで普通の投稿フィードも削除し、そのうえで投稿フィードだけを出力するようなカスタマイズをする必要がありました。
しかし、WordPress4.4でついに、今までのfeed_linksで一緒くただった投稿フィードとコメントフィードを別々に扱えるフックが追加されました!
それが feed_links_show_posts_feedと、feed_links_show_comments_feed です。
試しにWordPress4.4 Beta4の環境で、以下の1行を足してみたところ…。
add_filter( 'feed_links_show_comments_feed', '__return_false' );
コメントフィードだけ消えました!
ただ、フックが追加されたのはfeed_linksだけで、feed_links_extraの方はそういうフックは見当たらなないなぁ…うーん、と思って探していたら、general-template.phpじゃなくてlink-template.phpの方にいろいろフックがあり、私のやりたいこと(投稿別のコメントフィードも消す)は既存のpost_comments_feed_linkフックでできそうなことがわかったので、なんとか申請できそうなところまで仕上げました。
てことで申請後の動きはまた後日。
参考情報
- #23692 (feed_links should have a parameter to choose which feed to display) – WordPress Trac
- Add filters to feed_links() to choose whether to display the links to posts feed and comments feed, separately.
- 4.3に入り損ねて、次のチケットで4.4って書き換えられてた。