クライアントの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フォーマットにカスタマイズ」。