WordPressで全文フィードを内緒で別配信する方法

当ブログの記事に共感していただけたら、また読みに来ていただけると嬉しいです。読んでくれる方の数が多くなると、更新するヤル気に繋がります(^^)

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

わかったブログのフィードは部分配信です。フィード経由でコンテンツを無断転載されるのが嫌なので。

ところがこの度、とあるサービスとの連携をするために、全文配信のフィードが必要になりました。

現在のフィードとは全く別のURLのフィードを用意して、そちらを全文配信にすることにしました。それなら、URLを知らない限り、他人から利用されることはありません。

WordPressでオリジナルのフィードを配信する方法(入り口)

を参考にしました。例えば、http://www.wakatta-blog.com?feed=zenbu で全文配信をしたい場合は、function.phpに、

add_action( 'do_feed_zenbu', 'do_feed_zenbu' );
function do_feed_zenbu() {
$feed_template = get_template_directory() . '/feed-zenbu.php';
load_template( $feed_template );
}

と記述します。

そして、テーマのディレクトリに「feed-zenbu.php」フィードのテンプレートファイルを置きます。

「wp-includes/feed-*.php」にデフォルトファイルがおいてあるので、配信したいフォーマットに合わせて選んでください。私はRSS2形式で配信したかったので、wp-includes/feed-rss2.phpをダウンロードしました。

<item>〜</item>をこんな感じに書き直しました。

<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><?php the_author() ?></dc:creator>
<?php the_category_rss('rss2') ?>
<guid isPermaLink="false"><?php the_guid(); ?></guid>
<description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
<?php $content = get_the_content_feed('rss2'); ?>
<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>
<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 do_action('rss2_item'); ?>
</item>

常に全文表示したいわけですから、余計な場合分けは取り除いて、

<content:encoded><![CDATA[<?php echo $content; ?>]]></content:encoded>

を表示させればよいわけです。

内緒の全文フィードのURLは、パスワード代わりに複雑にしておいたほうが良いでしょう。

▼▼▼▼

ついでに「今日のわかった」もフィードに表示させました。記事のラストの「今日のわかった」は、カスタムフィールド機能を利用して入力しています。

[WordPress] RSSフィードに一言メッセージを追加する方法

こちらの記事を参考にして、全文配信のラストに追加しました。function.phpに下記のコードを書き加えればOKでした。

function add_to_feed($content){
global $post;
$todays_wakatta = get_post_meta($post->ID,'kyounowakatta', true); 
if ($todays_wakatta) {
$content .= "<p><strong>[今日のわかった]</strong></p><p>" . strip_tags(htmlspecialchars($todays_wakatta)) . "</p>";
} 
return $content;
}
add_filter( "the_content_feed", "add_to_feed" ); 

お試し下さい。

今日のわかった

プラグインでは対処できない問題は、PHPで自力で処理するしかありません。WordPress使いなら、PHPはひと通り勉強しておくと良いと思います。

関連記事
スポンサーリンク

当ブログの記事に共感していただけたら、また読みに来ていただけると嬉しいです。読んでくれる方の数が多くなると、更新するヤル気に繋がります(^^)

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

フォローしていただけると、ブログ更新を見逃しません

push7 feedly
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です