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)。
対処方法
エラー時に正しくスキップできるように修正。
--- 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.
ディスカッション
コメント一覧
まだ、コメントがありません