ごめんなさい。プラグインのフォーラムを選んだつもりがテーマのフォーラムに書き込んでしまいました。
消していただくか移動いただければ助かります。
テーマを Twenty Fifteen 等の公式テーマにして、プラグインは FeedWordPress と Multibyte Patch だけを有効にしても再現するでしょうか?
テスト用に使っている WordPress 4.2.2 に FeedWordPress を入れて確かめてみましたが、そのエラーは出ず、フィードから投稿が作られました。
他のプラグインは無効にして試しています。
日本語でも問題の発生しないfeedもあるのですがエラーになるfeedもある状態です。
あるfeedについて1つも取り込めないときもあれば幾つか取り込んでエラーになるときもある。
だだし、そのfeedが更新されるまではエラーの発生の仕方は同じ。
日本語feedでも問題なく取り込めることもあります。
また、英語のfeedではエラーなりません。
なのでfeed内の文字の影響かなと思いました。
既に書きましたがWordpress4.1.1以下ならエラーになりません。
feedの構文には問題が無いです。
gatolaboさん、問題が起きやすいfeedを使って試してみましょうか。該当するfeedを教えて頂けませんか。
モデレータの方
書き込み先を間違えて申し訳ありませんでした。トピックの移動ありがとうございました。
gblsmさん
他所の方のfeedを挙げるのは憚られましたので自前のコンテンツからエラーになるfeedを作ってみました。
http://denwa.biz/feed/gatolabo.php
宜しくお願いします。
失礼しました、用意していただいたフィードで確かに同じエラーが再現しました。原因は今のところ想像がつきません。
gatolaboさん、ざっと調べたところ、FeedWordPressの内部で抜粋(excerpt)を自動生成する処理が日本語対応していない為にエラーが発生しているみたいです。WordPressの4.1.1まで普通に動作していた理由はわかりませんが。
プラグインのコードを下記のように修正するとエラーが無くなりました。これは WP Multibyte Patch の処理を真似したものですが、文字コードを UTF-8 に固定しているので注意してください。
FeedWordPressのファイル syndicatedpost.class.php の中です。修正前:
# If content is available, generate an excerpt.
if ( strlen(trim($content)) > 0 ) :
$excerpt = strip_tags($content);
if (strlen($excerpt) > 255) :
$excerpt = substr($excerpt,0,252).'...';
endif;
endif;
修正後:
# If content is available, generate an excerpt.
if ( strlen(trim($content)) > 0 ) :
$excerpt = strip_tags($content);
if (strlen($excerpt) > 255) :
$excerpt = mb_strcut($excerpt, 0, 252, 'UTF-8' ) . '…';
endif;
endif;
WP Multibyte Patch プラグインの機能を FeedWordPress へ取り込んで修正する場合は次のようにすれば良さそうです。抜粋の文字数は減りますが。
// $excerpt = substr($excerpt,0,252).'...';
// $excerpt = mb_strcut($excerpt, 0, 252, 'UTF-8' ) . '…';
$excerpt = wp_trim_words( $excerpt, 84, '...' ); // 84 = 252/3
gblsmさん
ありがとうございました。バッチリです。
phpで日本語とかUTF-8の扱いに慣れていないので全然問題無いように見えてました。
if (strlen($excerpt) > 255) :
$excerpt = substr($excerpt,0,252).'...';
endif;
私の場合はですが、この3行自体要らないかも。