Jump to the content

【WordPress】RSSフィードをSmartNewsに対応させる方法

WordPress

    【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> 内であればどこでも問題ありません。

    snf:logo

    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側にて審査を行い、登録完了後に配信されます。

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

    注目記事

    最近の記事

    ぼくが書いてます

    フロントエンドエンジニア

    イソップ

    ページの先頭に戻る

    Search results

    ×