状況の確認をさせてください。
google newsやtwitterの検索RSSなど、URLに日本語を含んだものをfetch_feedすると結果が0になってしまいます。
具体的にはどういうURLでしょうか。
・WP Multibyte Patchを1.5に戻してみましたがダメでした。
WP Multibyte Patchは、プラグイン名だと思われますが、この他にもプラグインを使っているでしょうか。
使っている場合は、それらのプラグインをオフにしても現象が発生するでしょうか。
・WP3.2や3.3.xのままにしている他のサイト(同じレンタルサーバの同じプラン)だと同じコード(テーマのfunction.phpに記述)で動いています。
テーマは twentyten か twentyeleven でしょうか。
それ以外のテーマを使っている場合、twentyten か twentyeleven に戻した場合でも現象が発生するでしょうか。
また、functions.php に記述したコードは具体的にはどのようなものでしょうか。
レスありがとうございます。
≪URL≫
http://news.google.com/news?ned=us&ie=UTF-8&oe=UTF-8&q=日本語+OR+ワードプレス&output=atom&num=30&hl=ja
や
http://search.twitter.com/search.atom?q=検索ワード
です。
テーマはtwentytenをベースにカスタマイズしたものです。
ページテンプレートからfunction.phpに記述した関数を呼び出しているので、テーマの変更で戻るかどうかを確認するのはローカル環境で試してみますので後でご報告いたします。(プラグインに関しても)
≪function.php≫
大体以下のような感じです。
function getRssNews($key, $num){
include_once(ABSPATH .WPINC .'/feed.php');
$item = (int)$num;
$keyword = urlencode($key);
if($keyword){
$rss = fetch_feed("http://news.google.com/news?ned=us&ie=UTF-8&oe=UTF-8&q=$keyword&output=atom&num=30&hl=ja");
if(!is_wp_error($rss)){
$rss->set_cache_duration(3600);
$rss->init();
$rss_items = $rss->get_items(0, $rss->get_item_quantity($item));
date_default_timezone_set('Asia/Tokyo');
}
return $rss_items;
}
return false;
}
宜しくお願い致します。
追記です。
ローカルに移してやってみました。
プラグインを全て無効化し、テーマをtwentytenに戻してやってみましたが、やはり同様の症状でした。
先程のURLをFirefoxなどで見るときちんと適切な情報が閲覧できるのですが、
上記コードでfetch_feedを受け取った$rssを見ると、この段階でおかしくなっているようです。
何故だろう???
私も getRssNews
のコードをコピーしてみましたが、表示がおかしくなりました。
公式マニュアルを読むと下記の記述がありました。
http://wpdocs.sourceforge.jp/Version_3.4#.E5.85.A8.E8.88.AC
RSS フィード内の言語を適切に反映
http://search.twitter.com/search.atom?q=%E6%A4%9C%E7%B4%A2%E3%83%AF%E3%83%BC%E3%83%89
だと、xml:lang=”en-US” になるので、
twitter で検索するときに、日本語を選択してあげないといけないのではないでしょうか。(twitter の設定は私は分からないので、twitter のサイトで確認してください。)
google news も明示的な言語設定が無いので、おそらくこれが原因でしょう。
ja.wordpress.org のフィードだと、(フィードの出力に) language ja がはいっているので、こちらは正常に表示されました。
http://ja.wordpress.org/feed/?s=%E3%83%96%E3%83%AD%E3%82%B0
なるほど、原因はそれのようですね。
が、twitterもgoogleもlanguage:jpにする術を見つけられませんでした。
googleの方はURLのned=usがフィードの出力言語を指定しているようです。
ned=deなどは通るのですが、肝心のned=jpやned=jaが通らない。。。
となると後は3.4での改良点をソース上で見つけてそれをスルーするようなフィルタリングをするしか無いのでしょうかね。(何かヒントがあれば是非お願いします)
ともあれバグではなくwordpressの改良によるものだと分かりましたので、解決済みとさせていただきます。本当にありがとうございました。