更新情報発信用フィードをカスタマイズする

アイキャッチ「新聞を読む男性」

サイトの更新情報を発信するRSSフィードファイルをカスタマイズします。
あちこちいじる為、初心者には向いていないかもしれません。

初心者の方にはこちらの「更新情報発信用フィードの抜粋にアイキャッチ画像をつける」がオススメです。

編集方法

よく使用されているフィードの形式は『RSS2.0』なので、
そちらを使ってのカスタマイズ例をご紹介します。

編集する元になるファイルを「wp-includes」から持ってくる。

  • RSS0.92形式の場合
    • feed-rss.php
  • RSS1.0形式の場合
    • feed-rdf.php
  • RSS2.0形式の場合
    • feed-rss2.php
    • feed-rss2-comments.php
  • atom形式の場合
    • feed-atom.php
    • feed-atom-comments.php

使用中のテーマフォルダに持ってきたファイルをアップロードする。

feed-rss2.php

<?php
/**
 * RSS2 Feed Template for displaying RSS2 Posts feed.
 *
 * @package WordPress
 */

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;

echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>

<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/"
	<?php
	/**
	 * Fires at the end of the RSS root to add namespaces.
	 *
	 * @since 2.0.0
	 */
	do_action( 'rss2_ns' );
	?>
>

<channel>
	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></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 bloginfo_rss( 'language' ); ?></language>
	<?php
	$duration = 'hourly';
	/**
	 * Filter how often to update the RSS feed.
	 *
	 * @since 2.1.0
	 *
	 * @param string $duration The update period.
	 *                         Default 'hourly'. Accepts 'hourly', 'daily', 'weekly', 'monthly', 'yearly'.
	 */
	?>
	<sy:updatePeriod><?php echo apply_filters( 'rss_update_period', $duration ); ?></sy:updatePeriod>
	<?php
	$frequency = '1';
	/**
	 * Filter the RSS update frequency.
	 *
	 * @since 2.1.0
	 *
	 * @param string $frequency An integer passed as a string representing the frequency
	 *                          of RSS updates within the update period. Default '1'.
	 */
	?>
	<sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', $frequency ); ?></sy:updateFrequency>
	<?php
	/**
	 * Fires at the end of the RSS2 Feed Header.
	 *
	 * @since 2.0.0
	 */
	do_action( 'rss2_head');

	while( have_posts()) : the_post();
	?>
	<item>
		<title><?php the_title_rss() ?></title>
		<link><?php the_permalink_rss() ?></link>
		<comments><?php comments_link_feed(); ?></comments>
		<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><![CDATA[<?php the_author() ?>]]></dc:creator>
		<?php the_category_rss('rss2') ?>

		<guid isPermaLink="false"><?php the_guid(); ?></guid>
<?php if (get_option('rss_use_excerpt')) : ?>
		<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<?php else : ?>
		<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
	<?php $content = get_the_content_feed('rss2'); ?>
	<?php if ( strlen( $content ) > 0 ) : ?>
		<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
	<?php else : ?>
		<content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded>
	<?php endif; ?>
<?php endif; ?>
		<wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
		<slash:comments><?php echo get_comments_number(); ?></slash:comments>
<?php rss_enclosure(); ?>
	<?php
	/**
	 * Fires at the end of each RSS2 feed item.
	 *
	 * @since 2.0.0
	 */
	do_action( 'rss2_item' );
	?>
	</item>
	<?php endwhile; ?>
</channel>
</rss>

※記事部分は69行目 while( have_posts()) : the_post(); から、103行目 <?php endwhile; ?> までの部分です。

function.phpに以下のプログラムを追加

/*	rss2.0のテンプレートを変更
/*---------------------------------------------------------*/
remove_filter('do_feed_rss2', 'do_feed_rss2', 10);
function custom_feed_rss2() {
    load_template( get_template_directory() . '/feed-rss2.php' );
}
add_action('do_feed_rss2', 'custom_feed_rss2', 10, 1);

RSS2.0を表示

URLの記入方法

<?php bloginfo('rss2_url'); ?>" />

<head>~</head>内に入れるRSS2.0のクタグ

<link title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" rel="alternate" type="application/rss+xml" />

feed-rss2.phpファイルを編集

カスタマイズ例です。

コメント部分を削除する

RSSフィールのカスタマイズ「コメント部分を削除する」

下記3箇所(3行分)削除します。

  • <?php comments_link_feed(); ?>
  • <?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?>
  • <?php echo get_comments_number(); ?>

特定のカテゴリー記事のみを出力したい

追加するif文の条件を変更すれば出力条件が変わります。

記事出力部にif(条件)文を追加します。

  • while( have_posts()) : the_post();の後ろに挿入
    if ( in_category(array('スラッグ名','スラッグ名',・・・,'スラッグ名')) ) :

    または

    if ( in_category(array(カテゴリーID,カテゴリーID,・・・,カテゴリーID)) ) :
  • 一番下にある<?php endwhile; ?>を下の様に変更
    <?php endif; endwhile; ?>

抜粋を表示させる場合、アイキャッチ画像を一緒に掲載したい

抜粋部分を編集します。

<?php if (get_option(‘rss_use_excerpt’)) : ?>の後ろにある
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>を編集します。

  • <![CDATAの次に画像を表示するプログラム文を挿入
    <?php echo get_the_post_thumbnail($post->ID, 'medium', 'align=right'); ?>

    medium・・・設定:メディアで設定した中サイズの画像が表示されます。(変更可)
    align=right・・・右側に画像が表示されます。(変更可)

  • このエントリーをはてなブックマークに追加

関連記事

ピックアップ記事

  1. アイキャッチ「手紙」
  2. アイキャッチ「行き止まり(工事中)」

アーカイブ

ページ上部へ戻る