2015.06.14スポンサーリンクニュースアプリのSmartNews。この度ファッションニュースサイト「ぐーぱん」で、SmartNewsに対応したRSSを自作してみました。申請出してる段階なので、実際に配信されるかは話は別...。メモ代わりに記事を書きます。今回はRSSのカスタマイズや、独自形式のRSSを配信したい人向けの記事です。広告を配信する関連記事について関連記事を実装する抜粋表示に設定している場合の変更点まとめスポンサーリンクSmartNewsSmartNewsでは、媒体運営者向けに独自仕様のフォーマットを公開しています。Publishersabout.smartnews.com色々キュレーションメディアはあるものの、仕様は良くわかりません。Newsは公開されてたので、今回弄ってみました。Newsの形式するためには、独自仕様のフォーマットに対応しないといけません。RSS2の仕様に似ているんですが、若干要素を追加する必要があります。アイキャッチやサイトロゴ、関連記事などなど。WordPressのフィード(RSS2.0)もそのまま流用できますが、テンプレートを直接変更するとアップデート時に上書きされ、かつ他のRSSリーダーでエラーが起こる可能性があります。News専用のテンプレートを作るのが望ましいです。そこで今回SmartNews向けのRSSを作るため、専用のテンプレートを作成(feed-rss2.phpをコピー)し、色々改造してみました。最初にRSSフォーマットのテンプレートをPCにコピーします。通常Wordpressのフィードは、「wp-includes」フォルダのテンプレートを使って出力されています。「wp-includes」フォルダにある「feed-rss2.php」をPCにコピーします。FFFTPなどでコピーしちゃいましょう。次にファイル名を「smartnews.php」に変更。テーマフォルダの中に移動させます。あとは管理ページの「テーマの編集」からいじれます。テキストエディタでいじった後再アップロード。これで下準備は整いました。今回独自仕様のRSSを作りにあたり、下記ブログの記事を参考に致しました。WordPressがデフォルトで出力する(管理画面から操作可能な)フィードは4つですかね。qiita.comWordPressの場合、通常フィードのURLは以下の様な形になっていますよね。News専用のフィードを作成しました。ttp://hogehoge.hoge/?feed=smartnewsなぜか”feed/smartnews”では利用できなかったので、上記のURLでスマニュー向けに作ります。上記Quiitaさんの記事のコードをほぼそのままfunction.phpに追加します。当方では下記のように変更しました。);}こうすることで、”http://サイトURL/?feed=smartnews”で、オリジナルのテンプレートを使ってRSSの配信ができるようになりました。do_feed_hogeにすれば、http://hogehoge.hoge/?feed=hogeのような形式になります。WordPress*/の@packageを少しだけ変更。WordPressは使っちゃダメ、みたいな内容を見かけたので、若干変えています。日本語ja.forums.wordpress.orgでは、早速smartnews.phpを改造しましょう。version~で始まる箇所に以下2行を追加します。xmlns:snf="http://www.smartnews.be/snf"12xmlns:media="http://search.yahoo.com/mrss/"xmlns:snf="http://www.smartnews.be/snf"これでOK。名前空間の部分はこうなりますね。Formatに対応させるため、サイトのURLやロゴ画像、コピーライト等をRSSに追加します。SmartFormatの仕様では、独自要素として下記を追加します(実際のコードは下に)。Newsのクローラの巡回頻度です。1にすると1分に1回拾いに来るようなので、サーバーへの不可が若干かかるかも。<image></image>はサイトのロゴ画像に関する内容になります。上記「ぐーぱん」の部分ですね。ロゴ画像は512×512ピクセル固定で、別途用意する必要があります。用意が終わったら、smartnews.phpの76行目付近に以下を追加します。“?></sy:updateFrequency>“の下に挿入。</image>7475767778798081?></sy:updateFrequency><copyright>(c)ぐーぱん</copyright><ttl>120</ttl><image><url>http://gu-pan.com/gu.png</url><title>ぐーぱん</title><link>http://gu-pan.com/</link></image>これで著作権表示とサイトロゴ・URLの追加が終わりました。ttlの120は、2時間に1回クロールしてね、ということになります。更新頻度によっては半日に1回(<ttl>720</ttl>)でも良いかも。次に記事ごとのサムネイル画像を設定します。Newsでは必須ではないものの、あったほうが見栄えも良くなりますよね。<item>~</item>内に要素を追加してやりましょう。mysql2date~...“で始まる行を見つけます。その下に下記のコードを追加しました。Fotmatでは、記事ごとに<media:thumbnail~で始まる要素を追加すると、記事別にサムネイル画像が表示されます。Wordpressでアイキャッチを設定しているなら、そのままこれでOKです。(※上記は全記事にアイキャッチを設定している場合を想定しています)get_post_thumbnail_id関数でサムネイルのIDを取得し、wp_get_attachment_image_src関数でサムネイルのURLを取得します。?>と、[0]を指定してやるとURLの情報を参照することができます。/>このように挿入されます。ちなみにサムネイル画像は200×200ピクセル以上推奨だそうです。ぱんは600×400が基準になっています。Newsでは、記事ごとに広告を1つ配信できるようになっています。広告サイズは300×250ピクセルまで、表示位置は指定できません。下記の仕様に従い、要素を追加する必要があります。<snf:advertisement><snf:adcontent>広告タグ</snf:adcontent></snf:advertisement><snf:advertisement>が広告の始まり、<snf:adcontent>~</snf:adcontent>に配信したい広告のタグを挿入します。アドセンスは何やら怪しかったので、今回は忍者admaxをチョイスしてみました。?></slash:comments>“の下部に以下を追加します。Newsで広告が配信されるようになります。Newsでは、関連記事も表示してくれます。RSSのテンプレートでget_the_category関数・get_category関数が上手く動作しなかったため、下記ブログのコードを流用させて頂きました。WEB屋www.4web8.comテーマのfunction.php内に上記のコードを追加します。次に、SmartNewsで関連記事を取得する要素を追加しましょう。Formatの仕様では、以下のようになっています。Newsが関連記事とみなし、アプリで表示してくれます。関連記事を実装するさて、smartnews.phpに関連記事の要素を追加してみましょう。広告配信に関する要素”</snf:advertisement>“の下に、下記を追加します。WEB屋」さんで公開されているGetCategoryIDを使い、記事の投稿IDからカテゴリのIDを取得します。次にget_category関数でカテゴリに関する内容を取得、同カテゴリ内からランダムに記事を1つ抽出するようにしました。その後while内で関連記事のサムネイルURL($rel_thumb_id~...の部分)を取得しています。”<snf:relatedLink~”に関連記事タイトル、URL、サムネイルのURLを挿入するようになっています。linksの部分が関連記事です。抜粋表示に設定している場合の変更点WordPressのRSSを抜粋表示にしている人もいるかと思います。News用のRSSも抜粋表示になってしまい、仕様に反してしまいます。Formatでは、全文表示が必須になってるからです。下記の部分を少しカスタマイズする必要があります。表示設定で全文表示にしている場合は改造の必要がありません。?>大体100~110行目付近でしょうか?上の箇所を以下のように少しだけ変更します。isPermaLink=”false”>で始まる行と、<wfw:commentRss>で始まる行の間ですね。?></wfw:commentRss><description>は記事の概要、<content:encoded>の行が記事本文表示処理です。これで<description>はRSS設定の抜粋を表示するようにし、本文にあたる部分は全文表示するようになります。Validatorを使うと問題なし。面倒なのでぐーぱんでもこのまま使ってます。大丈夫...だと思います。まとめwp-includesからテンプレートをコピーするテーマフォルダにコピーするfunction.phpに書き足す一応SmartNewsでなくとも、この3つをすればWordpressで独自形式のRSSを配信できます。RSSを独自フォーマットで用意したい場合はいかがでしょう。今回はSmartNews向けにしましたが、カスタマイズすれば色々使い回しできると思います。抜粋を全文に変更SmartNewsの場合は最低限これくらいです。作り終わったら下記で確認を。Validatorvalidator.engine.smartnews.beエラーメッセージが空なら仕様に沿ったフォーマットの完成です。RSSのカスタマイズが正直ここまで面倒だと思いませんでした。当方PHP初心者もいい所なので間違いが有る可能性も大です。動作に関しては保証できませんのでご了承下さい。テンプレートの完成形の配布って出来ましたっけ。WordpressのライセンスはGPLなので大丈夫かな。別途RSS本文にアイキャッチを表示するカスタマイズをしても良いですね。アイキャッチ」でググると色々出てくるので是非。コメントデータの処理方法の詳細はこちらをご覧ください。管理人について@kouhei_flappeさんをフォローフリーライターのKouheiです。ネット向けの記事を書いてゆるく暮らしています。当サイトではフリーランス向けの情報を配信中です。ブログの記事を検索ブログ・まとめ記事などでの文章の一部利用・引用は著作権法の範囲内でお願いします。公開中の記事・ページは全てリンクフリーです。リンクはご自由にお貼り下さい。サイト内で利用している画像・イラストの著作権は権利者に帰属します。Naverまとめ他キュレーションメディア各種、ウェブ、電子書籍、紙等の媒体を問わず直接リンクを禁じます。クリエイティブ・コモンズはライセンスに従い、他画像の引用等については素材サイトの規約を確認するか、直接権利者へお問い合わせ下さい。サイト内の記事は主観を含みます。公開より年月が経ち、古い情報となっている可能性もあるため、内容の正確性・信憑性は保証できませんのでご注意下さい。管理人について@kouhei_flappeさんをフォローフリーライターのKouheiです。ネット向けの記事を書いてゆるく暮らしています。当サイトではフリーランス向けの情報を配信中です。広告を配信する関連記事について関連記事を実装する抜粋表示に設定している場合の変更点まとめタイトルとURLをコピーしました。