welcart

welcart Cannot use object of type WP_Error as array ログインできない?!

ワードプレスにログインしようとしたら、Cannot use object of type WP_Error as array

って、何?!さっきまで動いてたぞ!

よく見ると、Cannot use object of type WP_Error as array

要するに、ワードプレスは、そのタイプを求めてない!処理できないから落ちる!

ってことらしい。


さらに見ると plugins/usc-e-shop と言う文字が。

お? welcart のどこかで落ちてるね?

で、見つけた。


Cannot use object of type WP_Error as arrayの原因


Cannot use object of type WP_Error as array のエラーメッセージの中に usc-e-shop が見つかっていきなり落ちたんなら、たぶん原因は、ここ。

メッセージの最後に in xxx ってエラーを出した行番号がでてないですか?

50~60行目当たりなら、いい感じ♪

で、エラーメッセージの中に update_check.php って文字見えない?

え?!見える?! おお!ますます解決できそうですね。

plugins/usc-e-shop/includes/update_check.php なら大当たり。

update_check.php の該当する行を調べてみるとこんなステートメントじゃない?

$wcproducts = (array)json_decode($response[‘body’]);

なに?!ほんとか、この行か!

おめでとーございまーす。解決できまーす。


原因は、その一つ上の行をみてください。

こんなステートメントが入ってますよね?

$response = wp_remote_post( USCES_UPDATE_INFO_URL.’/update_info/info_api.php’, $options );

これ、バージョンアップ検査した結果を返してるんです。

バージョンアップ検査は、WELCARTのサイト。


そこが落ちてるとバージョンアップ情報の仮想配列ではなく WP_Error が返ってきます。

要するに仮想配列を求めてるのに、なにしてくれてんじゃー!ってことで

$wcproducts = (array)json_decode($response[‘body’]);

の行で落とされちゃってるんです。


Cannot use object of type WP_Error as arrayの対策


要するに配列じゃないから落ちてるわけなので、戻ってきたものが配列かどうかしらべてあげて、配列じゃなければ、今日は更新するのやめましょうってことにすればいいわけです。

このように修正します。

$response = wp_remote_post( USCES_UPDATE_INFO_URL.′/update_info/info_api.php′, $options );
if(!is_array($response)){
return;
}
$wcproducts = (array)json_decode($response[′body′]);

黄色い部分が追加したステートメント。


Cannot use object of type WP_Error as array まとめ


サイトがいつでも生きているって前提で書かれたプログラム。。。

いや、ありえんなとか思いながら修正しました。

あなたの一助になれば幸いです。
スポンサードリンク

関連記事一覧