WordPressのRSSが自動検出されない場合

WordPressのRSSが自動検出されない場合

WordPressで特定のテーマ(今回の例はLION BLOG)を使っている場合に、RSSの自動検出サイトでの検出が出来なくなる。
RSSの自動検出はこちらのサイトで試すことが出来る。

RSSが自動検出出来るのは、検出側が闇雲にRSSファイルを探しているからでは無い。
HTMLヘッダ部分に、RSSファイルの所在が明示されているからだ。
例えばこのページの場合は以下のようになる。

<link rel="alternate" type="application/rss+xml" title="F&amp;FのBlog風Next &raquo; フィード" href="https://www.fnf.jp/blog2/feed/" />

今時は自動検出しなくてもRSSを明示しているサイトが多いことや、従来はBlogで盛んに行われていたping(更新通知)も過去のものになりつつある点などで、LION BLOGではあえて(WordPressオリジナルの)ヘッダーへのlink記載を止めているそうだ。

しかし一部のサイトではpingを送るとRSSを読みに来る場合もある。
ランキングサイトやブログ紹介サイトはPingをトリガとしてRSSを読みに来るが、このlinkがないとRSSのURLが分からないので記事概要を取得しなくなる。

そこでヘッダへのlinkの掲載を復活させる。
設定→外観→テーマエディタと進んでCSSの編集画面に行く。

ここでstyle.cssが表示されていたら、右側の項をクリックしてfunction.phpに変更する。

そして以下のコードを貼り付ける。

// headにRSSフィード
add_theme_support('automatic-feed-links');
add_action( 'wp_head', 'feed_links' );
//コメントのRSSフィードは出力しない
add_filter( 'feed_links_show_comments_feed', function() { return false; } );

これでRSSの自動検出が出来るようになる。

RSSはGoogle検索も読み込んでいて、RSSをフィードすることが推奨されている。

WordPressのRSSフィードは以下のURLになる。
【標準フィード】

http://example.com/?feed=rss
http://example.com/?feed=rss2
http://example.com/?feed=rdf
http://example.com/?feed=atom

【カスタム パーマリンク使用時】

http://example.com/feed/ 
http://example.com/feed/rss/ 
http://example.com/feed/rss2/ 
http://example.com/feed/rdf/ 
http://example.com/feed/atom/

WordPressはRSSに於いても記事同様にダイナミック生成である。
従って、そこにファイルとしても実体があるわけではない。
あくまでも、リクエストが来るとそれを生成して送り出しているだけだ。

ブログ村・ブログサークル問題

WordPressのRSSは実体ファイルがあるわけではなく、ランキングサイトなどの仕組みによってはこれを取得出来ないことがある。
ブログ村やブログサークルでも取得出来ない場合がある。
場合があるというのは、全てのサイトで取得出来ないわけではなく、取得出来るサイトもあるからだ。

原因はよく分からないが、ブログ村なりブログサークルに問い合わせると取得して貰えると言う事なので、取得側に何か制限なり設定があるのだろう。

少なくともブラウザではRSSが表示出来る場合に、ではプログラムによる取得が出来るのか否かを確かめてみたい事もあるだろう。

Perlが使えるのであれば、以下のコードを実行すればRSSを取得出来る。
もしプログラムで取得出来ない場合は、RSS生成がうまく行っていない可能性がある。

#!/usr/local/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use LWP::Simple 'get';
use XML::RSS;
use Jcode;
use Socket;
use LWP::Protocol; #SSL対応に必要
my %enc = (
'jis' => 'ISO-2022-JP',
'sjis' => 'Shift_JIS',
'euc' => 'EUC-JP',
'utf8' => 'UTF-8'
);
my $str = 'url={RSSのURL}::line=15::dcs=off::enc=sjis';
my @str = split(/::/,$str);
for(@str)
{
my($nam,$val) = split(/=/,$_,2);
$nam =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2",$1)/eg;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2",$1)/eg;
$$nam = $val;
}
my $rss = new XML::RSS;
eval{
$rss->parse(get($url));
};
my $i = 0;
for my $item (@{$rss->{items}}) {
if ($i eq $line){exit;}
&Jcode::convert($item->{title},$enc,utf8);
print "{link} . "\" target=\"_brank\" title=\"" . $item->{title} . "\" rel=\"nofollow\"" . ">" . substr($item->{title},0,400) . "
";
$i ++;
}

それでもダメなら最後の手段

ブログ村は問い合わせを送るとRSSを取得してくれるようになる。
おそらくは個別の設定が必要なのだろう。
ブログサークル、実はここは存在すら知らなかった。
何故登録したかと言えば、RSSを取得してくれるかどうかの実験をしたかったからだ。
結果はNG、RSSは取得してくれない。

問い合わせ先も不明なので、最後の手段を使う事にする。
feedburnerに登録して、そこでRSSを作って貰う。
feedburnerは随分以前からあるのだが、Googleに飲み込まれたのか。

https://feedburner.google.com/

Burn a feed right this instant. Type your blog or feed address here:
↑のボックスにURLを入れれば、RSSを自動検出してくれる。
作られるRSSのファイル名は、まるでパスワードのような文字列になる。

http://feeds.feedburner.com/各サイト固有の文字列

これをブログサークルのRSS欄に入力すれば良い。

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村