WordPressのRSSへのデータ確認とCard Viewの修正

RSSリーダーに配信する設定をしているときに、内容がおかしいときがあります。
原因を特定は、記事本体の配信内容とからむ場合もありますが、 この配信内容を見直すのが、エラーチェックの1つの方法です。

RSS配信内容の見直しの仕方と修正をご提示します。

もくじ

設定の確認方法

RSSで読まれる内容と言うのは、対象のURLに「/feed/」をつけると見ることができます。

例えば、https://www.ak-up.com/free-blog-vs-wordpress/ に対してRSSの内容を確認したければ、
https://www.ak-up.com/free-blog-vs-wordpress/feed/
と入れてみます。

このように内容が確認できます。

以下のコードの内容は読み飛ばしてもいいですが、一応説明をつけておきます。

  • <?xml version=”1.0″ encoding=”UTF-8″?>
    • XMLの宣言をしています。以下の内容がXML形式で、バージョン1.0を使用していて、文字エンコーディングがUTF-8であることを示しています。
  • <rss version=”2.0″ …>
    • これはRSSフィードの開始を示します。使用しているRSSのバージョンが2.0です。
  • <channel>
    • RSSフィードの主要な部分を囲むタグで、フィードの内容が含まれます。
  • <title>
    • フィードのタイトルです。
  • <atom:link … />
    • Atomフィードへのリンクです。
  • <link>
    • フィードに関連するウェブサイトのURLです。
  • <description>
    • フィードの説明です。
  • <lastbuilddate>
    • フィードが最後に更新された日時です。
  • <sy:updateperiod> と <sy:updatefrequency>
    • これらはフィードがどのくらいの頻度で更新されるかを示します。ここでは「hourly」と「1」が設定されており、1時間ごとに更新されることを意味します。
  • <generator>
    • このフィードを生成したソフトウェアに関する情報です。ここではWordPressのバージョンが示されています。
  • </channel> と </rss>
    • <channel>タグと<rss>タグの終了を示しています。

Card Viewの追加修正

上記のRSSの内容でRSSの配信はうまくいっているのですが、Card viewが表示されないケースがありました。
修正方法を記録しておきます。

修正方法の例

function.phpに下記のコードを入れます。
my-custom-rss-template.phpを参照してコードを追加してほしいという内容です。

remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
add_action('do_feed_rss2', function($for_comments){
   $rss_template = get_template_directory() . '/my-custom-rss-template.php';
   if( file_exists($rss_template) ) {
       load_template($rss_template);
   } else {
       do_feed_rss2($for_comments); // 既定のテンプレートをフォールバックとして使用
   }
}, 10, 1);

my-custom-rss-template.phpを作成して、下記を入れ込みます。

<?php
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<rss version="2.0">
<channel>
    <title><?php bloginfo_rss('name'); ?> - Feed</title>
    <link><?php bloginfo_rss('url') ?></link>
    <description><?php bloginfo_rss('description') ?></description>
    <lastBuildDate><?php echo get_lastpostmodified('GMT'); ?></lastBuildDate>
    <language><?php echo get_option('rss_language'); ?></language>

    <?php while(have_posts()) : the_post(); ?>
        <item>
            <title><?php the_title_rss(); ?></title>
            <link><?php the_permalink_rss(); ?></link>
            <guid isPermaLink="false"><?php the_guid(); ?></guid>
            <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
            <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
            <?php if ( has_post_thumbnail() ) : ?>
                <?php
                $image_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'large');
                ?>
                <enclosure url="<?php echo esc_url($image_url[0]); ?>" type="image/jpeg"/>
            <?php endif; ?>
        </item>
    <?php endwhile; ?>
</channel>
</rss>

問題を確認して微調整を

画像の修正においてはCard viewが吐き出されるようになりました。

RSSの設定がうまくいっていても、投稿についてくるパラメータに余計に画像が入っていたり、入ってなかったりがあります。
状況を見て微調整をかけていきましょう。


【編集後記】
今期の覇権に入っていませんが、最果てのパラディンの2期もなかなかいいです。
「灯火の港の群像」までは入らないかもしれませんが、楽しみに見ています。

【運動記録】
ストレッチ○

【子育て日記(6歳・2歳)】
クリスマスが近づいているので、候補を選んで少しずつ聞いています。
欲しいもので、もらって喜ぶものを当てられるようにがんばります。

もくじ