WP RSS Aggregator 4.15.1 がRSSが探せないときにエラーになる件
複数のWebサイトのRSSを収集して、一括表示してくれる便利なプラグイン WP RSS Aggregator。設定時にRSS FeedのURLだけではなく、WebサイトのURLも指定できるのは便利です。WebページのHTMLを調べて、RSSを探し出してくれます。
本サイトでも “沖縄県内公共交通機関記事新着 | ず@沖縄” にて、WP RSS Aggregatorを利用しています。
ところが、この機能にバグがあるようで今日になってエラーが報告されるようになりました(Error Message: Call to undefined method WP_Error::get_permalink())。
以下、その対処方法のメモ。
現象
WordPressのcronから下記のレポートメールが届く。
どうやら、 wp-rss-aggregator/includes/feed-importing.php の wprss_get_feed_items 内で、WP_Error::get_permalink というメソッドが呼ばれているらしい。そんなメソッドはないのでエラーになっている。
発生原因
たまたま RSS Feed収集先の ti-da.net がメンテナンス中のため HTMLからRSSを拾ってこれない状態になっていた。これがきっかけとなって、エラーが発生していた。
wprss_get_feed_items が利用している wprss_fetch_feed関数はRSSが探せないときはWP_Errorを返すのだが、それを適切にチェックせずにget_permalinkメソッドを呼んでいた。
このバグは4.15から4.15.1になる過程で混入している(Diff [2123942:2139567] for wp-rss-aggregator/trunk/includes/feed-importing.php – WordPress Plugin Repository)。
対処方法
エラー時に正しくスキップできるように修正。
[code lang="php"]
— includes/feed-importing.php.old 2019-08-16 02:08:10.353326009 +0900
+++ includes/feed-importing.php 2019-08-21 02:13:28.097733216 +0900
@@ -238,8 +238,10 @@
/* Fetch the feed from the soure URL specified */
$feed = wprss_fetch_feed( $feed_url, $source, $force_feed );
– update_post_meta( $source, 'wprss_site_url’, $feed->get_permalink() );
– update_post_meta( $source, 'wprss_feed_image’, $feed->get_image_url() );
+ if ( !is_wp_error( $feed ) ) {
+ update_post_meta( $source, 'wprss_site_url’, $feed->get_permalink() );
+ update_post_meta( $source, 'wprss_feed_image’, $feed->get_image_url() );
+ }
// Remove previously added filters and actions
remove_filter( 'wp_feed_cache_transient_lifetime’ , 'wprss_feed_cache_lifetime’ );
[/code]
追記
wp-rss-aggregator 4.15.1には、この他にもバグがあるようなので、4.15を使い続けた方がマシかも。大幅な機能追加・プログラム改変が入ってるから、しばらくは安定しないかも。
4.14も致命的なバグがあるので要注意。
追記:次期リリースで修正されるとのこと
We’ll be fixing this error in the next release.
ディスカッション
コメント一覧
まだ、コメントがありません