WordPressには、サイトの更新情報を発信する方法として「RSS」配信機能が搭載されています。
RSSは、ニュースやブログなど各種のウェブサイトで、更新情報を配信するためのXML形式のデータフォーマットで、WordPressにも標準搭載されています。
RSS配信しているサイト(以下のような画像が掲載されているサイト)なら、RSSリーダーと呼ばれるツールを使用することで、更新情報や新着情報を自動的に取得することができます。
RSSフィードには、画像やテキストを出力することができますが、WordPressの設定画面からは、RSSフィードに表示する内容として「全⽂を表⽰」するか「要約」を表示するかしか設定できません。
そこでここでは、WordPressのRSSフィードに指定した抜粋内容を表示させたり、アイキャッチ画像を出力させるカスタマイズ方法を紹介します。
目次
moreタグまでの内容を出⼒する
WordPressには、Webページの抜粋を指定するためのタグとして「more」タグがあり、このタグを活用して、RSSフィードにmoreタグまでの内容を出力させることができます。
実装方法は、子テーマの「functions.php」に以下を追記します。
function my_content_feeds($content) {
global $post, $more;
$more = false;
$content = apply_filters('the_content', get_the_content(''));
$content = str_replace(']]>', ']]>', $content);
return $content;
}
add_filter('the_excerpt_rss', 'my_content_feeds');
add_filter('the_content_feed', 'my_content_feeds');
moreタグまでの内容に加えて、元記事へのリンクも出力させたいときは、以下を追記します。
function my_content_feeds($content) {
global $post, $more;
$more = false;
$content = apply_filters('the_content', get_the_content(''));
$content = str_replace(']]>', ']]>', $content);
$content = $content . '<div><a href="' . get_permalink($post->ID) . '">「 ' . get_the_title($post->ID) . ' 」の続きを読む</a></div>';
return $content;
}
add_filter('the_excerpt_rss', 'my_content_feeds');
add_filter('the_content_feed', 'my_content_feeds');
上の処理を「functions.php」に追記する場合、記事内にmoreタグがないと全文出力されてしまうのでご注意ください。
アイキャッチ画像を出力する
RSSフィードにアイキャッチ画像を出力させたいときは、子テーマの「functions.php」に以下を追記します。
function rss_thumbnail($content) {
global $post;
if (has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID,'medium') .'</p>' . $content;
}
return $content;
}
add_filter( 'the_excerpt_rss', 'rss_thumbnail');
add_filter( 'the_content_feed', 'rss_thumbnail');
RSSフィードへの反映を遅延させる
デフォルトでは、投稿が公開されるとRSSフィードの内容も同時に更新されますが、コンテンツの盗用が気になるなら、投稿を公開してからRSSフィードに表示されるまでの時間に遅延を設定することで、コンテンツの盗用を減らす効果があります。
たとえば、投稿が公開されてからRSSフィードが更新されるまでに30分の遅延を設定したい場合は、子テーマの「functions.php」に以下を追記します。
//RSSフィードでの投稿表示を30分遅らせる
function delay_feed_content($where) {
global $wpdb;
if ( is_feed() ) {
$now = gmdate('Y-m-d H:i:s');
$wait = '30';
$device = 'MINUTE';
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter('posts_where', 'delay_feed_content');
投稿者情報を変更する
WordPressが生成するRSSフィードには、投稿者の情報(dc:creator)が記載されていますが、投稿者名がWordPressの管理画面へのログイン名であることも多いため、フィードに表示される投稿者名は変更しておくとよいでしょう。
投稿者名を変更する方法としては、WordPressの管理画面でユーザーにニックネームを設定する方法もありますが、別の名前を設定することもできます。
たとえば、投稿者情報(dc:creator)欄をサイト名に変更したい場合は、子テーマの「functions.php」に以下を追記します。
//RSSフィードのdc:creator名をサイト名に変更する
function delete_feed_author($author) {
if(is_feed()){
$author = get_bloginfo( 'name' ) ;
}
return $author;
}
add_filter( 'the_author', 'delete_feed_author');
あとがき
RSSフィードに出力される内容を必要な情報だけに絞り込めば、より分かりやすく安全に更新情報を配信できるでしょう。