WP RSS Aggregator 4.15.1 がRSSが探せないときにエラーになる件

2019/08/21WordPress

複数の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)。

対処方法

エラー時に正しくスキップできるように修正。

--- 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' );


追記

wp-rss-aggregator 4.15.1には、この他にもバグがあるようなので、4.15を使い続けた方がマシかも。大幅な機能追加・プログラム改変が入ってるから、しばらくは安定しないかも。

4.14も致命的なバグがあるので要注意。


追記:次期リリースで修正されるとのこと

We’ll be fixing this error in the next release.

WordPress

Posted by ず@沖縄