Web制作

WordPressのフィード(feed)テンプレートをカスタマイズする

クライアントのWordPressサイトをSmartNewsで配信することになり、フィード(feed)テンプレートを編集する必要があった。

SmartNewsに配信するためにはSmartNewsに対応したフィード(SmartFormat)を出力する必要があるのだが、WordPressデフォルトのフィードだとNG。
スマートニュース対応ができるプラグインがあるようだったのだが、うまく使えなかった(誰か使い方知ってたら教えてください)ので、結局自力で解決。


フィードテンプレートはwp-include内に存在する、がそれは弄りたくない

フィードテンプレートはwp-include内部に存在する
これを直接編集してfeedの出力内容を変更することも出来るのだが、アップデートのときとかに不具合が出たり元に戻ったりしそうだったので、

テーマファイル内にfeedファイルを作ってそれを出力するようにした。


まずは、テーマファイル内にカスタムしたフィードファイルを準備

まずはテーマファイル内にSmartNews用にカスタマイズしたフィードファイルを準備する。
基本的にはwp-include内のfeed-rss2.phpをベースに作るのが良いと思う。
(今回はフィードテンプレートをいじるまでの準備に焦点を当てたいので内容は割愛。SmartNews用のフィードファイルの内容は別記事にてまとめる。)
→2022/09/2追記 フィードファイル内容についてまとめました:「WordPressをスマートニュースの配信に適したRSSフォーマットにカスタマイズ」。


functions.phpでテーマ内のファイルを参照するようにアクションを準備

テーマファイルのfunctions.phpに下記を追記。

remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
 function custom_feed_rss2(){
 $template_file = '/xxxxxxx.php';
 load_template(get_stylesheet_directory() . $template_file);
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);

やってる処理としては、
1行目でremove_filterでデフォルトfeedファイルへの参照を削除して、
2−5行目でテーマ内の「xxxxxxx.php(名前はなんでも良い)」参照するアクション関数「custom_feed_rss2」を登録
というような感じ。

これで、テーマ内に自作したフィードテンプレートをfeedとして出力できるようになった。


応用すれば何種類ものフィードテンプレートを準備することも可能

あまり必要となることはないかもしれないが、上記の記述を応用して複数のフィードテンプレートを準備しておくということもできる。
(媒体ごとに異なるフィードを出力したい、という時とかに使えるのかな?)


SmartFormat対応済みでも審査が通らないこともあるらしい

SmartFormat対応済み、という状態にしたところで晴れてSmartNewsへ出稿申請をするのだが、この審査に1-3ヶ月はかかる。
しかも審査結果は特にメールとかでアナウンスされたりしないので、自分でスマートニュースを確認する必要がある(=スマートニュースに配信されてたら審査合格、配信されてなかったら審査中or不合格)という不親切。
(まぁそれだけ出稿希望者が多いということなのだろうが)
出稿申請者的にもヤキモキするところだし、審査が合格しないと「サイト制作した側に問題があるんじゃないの?」と疑われかねないのが制作者側としては胃が痛むところ。
なのでクライアントから依頼された時は、「審査に1-2ヶ月かかる&フィードを対応しても合格にならない場合がある」ということを事前に要説明。僕が担当したサイトは配信まで3ヶ月くらいかかったかな?

smartformat対応のフィードテンプレートについては次回あたりに記事にしてアップします。
→2022/09/2追記 フィードファイル内容についてまとめました:「WordPressをスマートニュースの配信に適したRSSフォーマットにカスタマイズ」。

TOP