【WordPress】RSSをカスタマイズしてSmartNewsに記事を配信する方法

【WordPress】RSSをカスタマイズしてSmartNewsに記事を配信する方法
スポンサーリンク

どうも、イソップです。

WordPressで作成したメディアサイトを、SmartNewsに対応させることがありました。

SmartNewsではSmartFormatという配信の仕組みがあり、
サイトからSmartFormatの仕様に沿ったフィード情報を配信することで、SmartNewsでサイトの記事が表示されます。
WordPressでは、RSSテンプレートをカスタマイズすることで、SmartNewsに対応させることができます。

今回は、WordPressでのSmartNewsへの対応方法を紹介します。

WordPressのRSSテンプレートの複製・読み込み設定

feed-rss2.phpを複製

まず始めに、WordPressのインストールディレクトリにある、wp-includes/feed-rss2.php を、
現在使用しているテーマディレクトリへコピーします。

コピーしたファイルの配置ができたら、現在のテーマの functions.php に次のコードを追加します。

<?php
//RSSをテーマ内から読み込む
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
function custom_feed_rss2(){
    $rss2_file = '/feed-rss2.php';
    load_template(get_template_directory() . $rss2_file);
    // 子テーマの場合は、get_stylesheet_directory()
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10);

このコードを追加することで、コピーしたRSSテンプレートを読み込むことができます。
子テーマを使用している場合、get_stylesheet_directory 関数を使用してください。

【関連記事】【WordPress】get_stylesheet_directory_uriで、子テーマのURLを取得する

SmartFormatに対応するRSS設定

次にテーマファイルに配置したRSSテンプレートを編集していきます。
feed-rss2.php の23行目部分に次の2行を追加します。

    xmlns:media="http://search.yahoo.com/mrss/"
    xmlns:snf="http://www.smartnews.be/snf"

追加後のコードは次のようになります。

feed-rss2.php 23行目

<?php

<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:media="http://search.yahoo.com/mrss/"
    xmlns:snf="http://www.smartnews.be/snf"
    <?php
    /**
     * Fires at the end of the RSS root to add namespaces.
     *
     * @since 2.0.0
     */
    do_action( 'rss2_ns' );
    ?>
>

この作業は、この後説明する、<media:thumbnail><snf:logo> の対応に必要ですので、
正しく設定してください。

サイト情報の設定

52行目にコピーライトの設定と、SmartNewsのヘッダーで表示されるロゴ画像の設定を追加します。
次のコードを追加します。

feed-rss2.php 52行目

    <copyright><?php bloginfo_rss('name'); ?> All rights reserved.</copyright>
    <snf:logo>
        <url><?php echo get_template_directory_uri(); ?>/img/***.png</url>
    </snf:logo>

コードの挿入位置は <channel>...</channel> 内であればどこでも問題ありません。

SmartNewsのヘッダーに表示するロゴ画像の情報を指定します。
横700px以下 x 縦およそ100px」の透過PNGファイルが推奨されています。

画像のパスは、自分のサイトに合わせて書き換えてください。

記事のサムネイル設定

次に記事のサムネイルを設定をします。

今までの設定が出来ていれば、101行目に次のコードを追加します。

feed-rss2.php 101行目

<?php
    $image_id = get_post_thumbnail_id();
    $image_url = wp_get_attachment_image_src($image_id, true);
?>
<media:thumbnail><?php echo $image_url[0]; ?></media:thumbnail>

コードの挿入位置は、92行目以降の <item>...</item> 内であればどこでも問題ありません。

記事のアナリティクス設定

SmartFormatの仕様では、アクセス解析のコードを設定することができます。
今回はGoogle Analyticsの設定を行います。

次のコードを、92行目以降の <item>...</item> 内に追加します。

feed-rss2.php 92行目以降に追加

<snf:analytics><![CDATA[
<script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-*****', 'example.com');
    ga('require', 'displayfeatures');
    ga('set', 'referrer', 'http://www.smartnews.com/');
    ga('send', 'pageview', '<?php echo str_replace(home_url(), '', get_permalink()); ?>');
</script>
]]>
</snf:analytics>

ga('create', 'UA-*****', '自分のサイトドメイン') は、アカウント情報に応じて適宜書き換えてください。

設定の確認

フィード情報の設定が完了したら、サーバーにファイルをアップロードしましょう。
フィード情報は、SmartFormat Validator で確認できます。

SmartFomat Validator

RSSが配信されているURLを入力してチェックボタンをクリックします。
WordPressでは、http://***/feed/ がフィードURLになります。

判定結果がvalidになれば完了です。

設定ができたら登録フォームから申請しよう

最後に、SmartFormat登録フォームから、
サイトの登録を申請しましょう。
SmartNews側にて審査を行い、登録完了後に配信されます。

今回紹介した設定以外にも、記事への広告設定ができますので、今後情報を追加していきます。

スポンサーリンク