WordPress カスタムフィールドに Warning:
この記事は約 4 分で読めます。
先日、
「ブログ上に意味不明文字出現」と言う
記事を書いたのですが、
同じような現象がカスタムフィールドで
起こりました。
どうしちまったんだ WordPress!
・・と嘆いている場合ではなく、
どうすればいいのか、
また具体的にどうしたか備忘録として残します。
Warning textの場所
まず、
Warning textの場所ですが、
投稿の編集画面
カスタムフィールドを追加: の上で、
内容としては、
Warning: count(): Parameter must be an array or an object that implements Countable in /○○/○○/○○/○○/wp-includes/wp-db.php on line 2459
プラグイン WordPress Ping Optimizerが
だす警告文と同じですね。
2459行は
// Extract the column values
for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) {
先の記事にも書きましたが、
WordPress Ping Optimizerの警告は
WordPress Ping Optimizerを
削除の容で解決いたしました。
プラグインなので必要性がなければ
削除も問題ないと思うのですが、
今回はWordPress本体のファイルでの警告、
削除って訳にはいきません。
PHPのバージョンを落とす
PHPのバージョンが絡んでいるのか、
試しにPHPのバージョンをPHP 7.1に
落としてみました。
警告文は消えます。
PHP7.2でエラーを出すって事になります。
じゃぁPHP 7.1でいいじゃん!って
事になりますが、
(さくらのレンタルサーバー)は、
PHP 7.1 (2019/1 提供終了予定) となっており、
解決にはならない・・・。
もっとも提供終了予定までに
WordPressがバージョンアップして、
エラーを修正してくれれば問題ないのですが、
絶対とは言えませんね。
解決策をググる
警告文を検索してみると
カスタムフィールドでの事例は
ほとんどありませんが、
警告文を消す修正方法が書かれた
記事がいくつか出できました。
しかし、どれも難しくて
とてもファイルをいじって直す気にはなれません。
その中でも
これならイケるかも!
と思った記事を発見しました。
この記事のエラー該当箇所の文字列が、
わたしのWordPressのエラー該当箇所の文字列に
かなりちかく、応用が利きそうです。
ファイルを修正する
上記の記事の中の
応急処置としては下記のように変更するといいかと思います。
$pingCount=count($this->cbnetpo_future_pings);
↓
$pingCount = $this->cbnetpo_future_pings ? count( $this->cbnetpo_future_pings ) : 0;
これを参考に
わたしのエラー箇所を修正すると、
for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) {
↓
for ( $i = 0, $j = $this->last_result ? count( $this->last_result ) : 0; $i < $j; $i++ ) {
これで警告文は消えました。
つまり、
WordPress Ping Optimizerも
この方法で直せたという事ですね。
もし、参考になれば幸いですが、
行う際はバックアップは必ずとってください。
わたしの場合はうまくいきましたが、
全ての環境で成功するとは限りません。
自己責任にて行ってください。
本体の修正はちょっと・・
ファイル本体の修正はやはりこわい
って場合は、
// 全てのエラー出力をオフにする
error_reporting(0);
上記を
子テーマの編集、
functions.phpに書いてください。
エラーが消えます。
しかし、
重要なエラー表示まで消してしまうのは
不安が残りますね。
上記リンクには
error_reporting() の例があります。
色々試してみるのもよいかもしれません。
// 致命的なエラーのみ表示する
error_reporting(E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR);
//E_NOTICE(注意メッセージ)とE_DEPRECATED(推奨エラー)は表示しない
error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE);
こちらもすべて自己責任でお願いします。
最後に
貴重なお時間を割き、
最後まで
ご高覧いただきまして
有難うございました
ディスカッション
コメント一覧
まだ、コメントがありません