WordPressのプラグイン「RSS Antenna」を使って他のブログの投稿を埋め込んでいるサイトを作っていますが、ふと見るとサイトに Warningが表示されています。
表示は問題ないように思いますが、Warning表示されていると見栄えが良くないので PHPファイルを修正してみることにしました。
Contents
Warningの内容を確認
Warningが出ている画面はこちら。
Warningの内容は以下の通り
Warning: Illegal string offset 'blogのURL' in /home/プラグインのあるURL/rss-antenna/rss-antenna.php on line 389
内容は一部文字を置き換えていますが、要するに文字列のオフセットが正しくないという意味だと思います。
該当するソースコードが明示されているので、今回は WordPressの管理画面で修正してみようと思います。
ソースを修正する
管理画面のプラグインからプラグインエディターを選択します。
次にエディター画面の右上にあるリストボックスから「RSS Antenna」を選択して選択ボタンを押します。
するとRSS Antennaのファイルが編集可能となります。
rss-antenna.phpが表示されていることを確認したら、Warning表示されている389行目を確認してみます。
問題となっているのは部分は次のコードです。
$map[$url] = $img_url;
どうやらブログの画像をキャッシュするためのURLを保存する処理に問題がありそうです。
「Illegal string offset」が表示されるのは、配列処理に問題があることが多いようです。
今回の場合は、$mapという配列に $urlに該当するデータがないことが原因と思います。
$mapは 388行目で $options[“cache_map”]があれば、それを使うようになっていますので、根本的にはこちらを修正したほうがいいのではないかと考え、$options[“cache_map”]を初期化しているところを探してみました。
すると、22行目で初期化しているところがありました。
$options["cache_map"] = "";
となっていますが、これが配列宣言になっていないことが問題のようです。
そこで次のように修正します。
$options["cache_map"] = array();
これで配列として宣言したので、キャッシュ処理のところでも問題がないはずです。
プラグインを再起動する
ソースを保存しただけでは、先ほど修正した個所は実行されません。
処理を実行するために、RSS Antennaを一度停止してから、再度、有効化する必要があります。
これで先ほど修正した個所が実行され、配列宣言されるので Warningが出なくなります。
まとめ
RSS Antennaは設定も簡単で使いやすいプラグインですので、使っている人も多いと思います。
Warningが表示されるとサイトのデザインが崩れて見栄えが悪くなので、同じ現象が起きている方は自力で修正できますので参考にしてください。
コメント