WordPressでカスタムRSSフィードを作成する方法を徹底解説
RSSフィードよりも優れたものは何でしょう?それはもちろん「カスタムRSSフィード」です。この共有技術の終焉を予言する声は長年聞かれてきましたが、今なお根強い人気を保っています。
統計によると、世界の上位10,000のウェブサイトのうち2,000以上がRSSフィードを定期的に公開しています。また、人気のRSSフィード集約サービスFeedlyは、わずか2年間で購読者数が900%増加し、収益も400%以上の伸びを記録しました。
デフォルトのWordPress RSSフィードにとどまらず、訪問者によりパーソナライズされた体験を提供したいと考えているなら、ぜひフィードのカスタマイズに挑戦してみましょう。本記事では、サイトや読者に合わせたフィードの作り方を詳しく解説します。
作業前の準備:サイトのバックアップを取る
今回の作業ではサイトのバックエンド(テーマファイル)に触れるため、必ず事前にバックアップを取りましょう。万が一不具合が発生しても、ウェブサイト、コンテンツ、設定がすべて無傷で残ります。このステップだけは絶対に省略しないでください。
また、WordPressテーマ用に新しいテンプレートファイルを作成するため、既存のテーマに影響を与えないよう、あらかじめ子テーマを作成しておくか、子テーマへ切り替えておくことをおすすめします。
WordPressでカスタムRSSフィードを作成する
まずは、テーマフォルダ内にある「functions.php」ファイルを編集します。ファイルを開き、以下のコードを貼り付けてください。
/* このコードはサイトのカスタムRSSフィードを初期化します */
add_action( 'init', 'MyCustomRSS' );
function MyCustomRSS(){
add_feed( 'mycustomfeedname', 'MyCustomFeedCallback' );
}
/* このコードはRSSフィードのテンプレートを読み込みます */
function MyCustomFeedCallback(){
get_template_part( 'rss', 'mycustomfeedname' ); // 小文字で指定する必要があります。
}
コード内のカスタムRSSフィード名を入力する箇所に注目してください。この名前はサイトのフィードURLの一部となります(例:「https://yoursite.com/feed/mycustomfeedname」)。そのため、覚えやすいシンプルな名前にすることをおすすめします。
注意: カスタムRSSフィードの名前には、小文字のみ使用できます。
カスタムRSSフィードのテンプレートを作成する
カスタムRSSフィードのテンプレートは、フィードがコンテンツを配信するために必要な情報を定義するものです。フィード版のHTML/CSSのような役割だと考えてください。ここでは、固有の名前を持つ新しいファイルを作成します。ファイル名は必ず「rss-mycustomfeedname.php」という命名規則に従ってください。
このファイルを子テーマフォルダに保存したら、開いて以下のコードを貼り付けます。
<?php
/**
* Template Name: Custom RSS Template - YourCustomFeedName
*/
$postCount = 10; // フィードに表示する投稿数
$postType = 'post'; // フィードに表示する投稿タイプ
query_posts( array( 'post_type' => $postType, 'showposts' => $postCount ) );
$charset = get_option( 'blog_charset' );
header( 'Content-Type: ' . feed_content_type( 'rss-http' ) . '; charset=' . $charset, true );
?><?xml version="1.0" encoding="<?php echo $charset; ?>"?>
<rss version="2.0"
xmlns:content="https://purl.org/rss/1.0/modules/content/"
xmlns:wfw="https://wellformedweb.org/CommentAPI/"
xmlns:dc="https://purl.org/dc/elements/1.1/"
xmlns:atom="https://www.w3.org/2005/Atom"
xmlns:sy="https://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
<?php do_action('rss2_ns'); ?>>
<channel>
<title><?php bloginfo_rss( 'name' ); ?> - Feed</title>
<atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
<link><?php bloginfo_rss('url'); ?></link>
<description><?php bloginfo_rss('description'); ?></description>
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
<language><?php echo get_option('rss_language'); ?></language>
<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
<?php do_action('rss2_head'); ?>
<?php while(have_posts()) : the_post(); ?>
<item>
<title><?php the_title_rss(); ?></title>
<link><?php the_permalink_rss(); ?></link>
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
<dc:creator><?php the_author(); ?></dc:creator>
<guid isPermaLink="false"><?php the_guid(); ?></guid>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
<?php rss_enclosure(); ?>
<?php do_action('rss2_item'); ?>
</item>
<?php endwhile; ?>
</channel>
</rss>
<?php // クエリをリセット
wp_reset_query();
このファイルは自由に編集でき、表示する投稿数も変更可能です。$postCount変数で表示件数を調整してください。デフォルトでは「投稿(post)」タイプが表示されますが、$postType変数を変更すれば、カスタム投稿タイプなど別の投稿タイプを表示することもできます。また、抜粋機能により各投稿の抜粋が表示され、抜粋が未設定の場合は記事の冒頭120語が自動的に表示されます。
カスタムRSSフィードに機能を追加する
基本のテンプレートが完成したら、さらに便利な機能を追加していきましょう。
フィードにアイキャッチ画像を表示する
フィードにアイキャッチ画像(サムネイル)を含めたい場合は、以下のコードをコピーして「functions.php」ファイルの末尾に貼り付けてください。
投稿にアイキャッチ画像が設定されている場合、この関数がそれを検出してフィードのテキストと一緒に出力します。画像が設定されていない場合は、何も処理を行いません。
/* このコードはカスタムフィードにサムネイル機能を追加します */
add_action( 'rss2_item', 'custom_thumbnail_tag' );
function custom_thumbnail_tag() {
global $post;
if ( has_post_thumbnail( $post->ID ) ) {
$thumbnail = get_attachment_link( get_post_thumbnail_id( $post->ID ) );
echo("<image>{$thumbnail}</image>");
}
}
フィードの言語を設定する
カスタムフィードを正しく動作させるために、言語を明示的に宣言する必要がある場合があります。
その場合は、「functions.php」ファイルに以下のコードを追加します。
function myFeedLanguage(){
update_option( 'rss_language', 'en' );
}
add_action( 'admin_init', 'myFeedLanguage' );
このコードで言語が英語に設定されます。別の言語に変更したい場合は、関数内のenの部分を希望する言語コードに書き換えてください。すべての言語コードの一覧は、W3Schoolsなどの参考サイトで確認できます。
カスタムフィードを有効化する
カスタムRSSフィードを実際に動作させるには、WordPressのリライトルールを更新(フラッシュ)する必要があります。手順は簡単で、「設定 → パーマリンク設定」画面に移動し、「変更を保存」ボタンをクリックするだけで完了です。
まとめ
カスタムRSSフィードは、通信環境が限られていてウェブサイト全体にアクセスしにくいユーザーにも、効率よくコンテンツを届けられる優れた手段です。さらに、AndroidやiOSのRSSリーダーアプリを通じて、新しい読者にあなたのサイトを発見してもらうきっかけにもなります。ぜひ一度試してみてください。
-
WordPressでランディングページを簡単に作る方法【初心者向け完全ガイド】
ブログプラットフォームとしてスタートしたWordPressは、今や世界で最も人気のあるCMS(コンテンツ管理システム)のひとつへと成長しました。シンプルな1ページのサイトから、本格的な商用コミュニティや会員制サイトまで、数百万人のユーザーがさまざまな目的でWordPressを活用しています。 その中でも、オンラインマーケターには広く知られている一方、一般ユーザーにはほとんど馴染みのない使い方が「ランディングページの作成」です。ランディングページとは何か?ホームページと何が違うのか?WordPressで最も簡単に作る方法は?この記事では、これらの疑問にお答えします。 ランディングページとホーム
-
RSSフィードとは?基本の仕組みとパソコンでの使い方を徹底解説
読書は、豊富な知識を得られるだけでなく、対人スキルの向上にも役立つ健康的な習慣です。インターネットの普及により、紙を節約してエコに読書を楽しめるようになりましたが、その一方で「読む価値のあるコンテンツを見つけにくい」という新たな悩みも生まれています。膨大な情報の中から良質な記事を選び出すのは、ネット読書における大きな課題の一つです。 そんな問題を解決するために開発されたのがRSSフィードです。RSSを活用すれば、読みたい・観たいコンテンツを探す手間が大幅に省けます。購読しているサイトや著者の最新情報が、RSSアグリゲーター(専用ソフト)に自動的に届くため、わざわざウェブサイトを訪問する必要があ