WordPress用プラグイン「IP Location Block」で警告メッセージが出た時の対処例
トップページへ
※当方は記事として書いただけですので、参考にされた場合のいかなる問題にも当方はすべての責任を負いかねます。
対処に必要な知識
PHP(楽天市場で探す ・ amazonで探す)の基礎レベル
症状
時期
・IP Location Blockプラグインを使用中の場合
IP Location Blockを更新した時(自動更新だったので時期は不明)
・IP Location Blockプラグインを初めてインストールした場合
そのプラグインを有効化した時
症状の詳細
ダッシュボードにこんな警告メッセージが出るようになりました。
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/admin/class-ip-location-block-admin.php on line 770
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block.php on line 825
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 637
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 664
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 665
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 666
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 667
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 668
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-apis.php on line 676
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block.php on line 752
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-logs.php on line 483
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-logs.php on line 483
Warning: Trying to access array offset on value of type null in /****/plugins/ip-location-block/classes/class-ip-location-block-logs.php on line 719
対処法
下記の2つのファイルを直したところ、全てのメッセージが表示されなくなりました。
手順
A ブラウザの「ソースを表示」から「プラグインファイルエディター」でソース内を検索し「plugin-editor.php」をクリックして「プラグインファイルエディター」で編集。
B レンサバのファイルマネージャー等で編集。
のどちらかで、下記の2つのファイルを編集します。
なお「事前に2つのファイルをダウンロードによるバックアップ」を強くオススメします。
作業は赤字の部分を追加するだけです。
その1 class-ip-location-block.php の825行目
if文で$this->endof_validate文を囲みます。( if ($die) 文の中に追加することになりますが、簡素化のためif ($die)の部分は省略しました)
変更前
$this->endof_validate( $hook, $validate, $settings, self::is_blocked( $validate[‘result’] ) );
変更後
if (isset($validate)){
$this->endof_validate( $hook, $validate, $settings, self::is_blocked( $validate[‘result’] ) );
}
その2 class-ip-location-block-admin.php の770行目
if文でswitch文を囲みます。なお付近に「}」が多いので留意して下さい。
変更前
switch ( $validate[‘result’] ) {
break;
}
}
// Check consistency of emergency login link
変更後
if (isset($validate)){
switch ( $validate[‘result’] ) {
break;
}
} //←この } だけを追加します
}
// Check consistency of emergency login link
結果(確認)
ただしく編集保存し、ブラウザの再読込みを行うと警告メッセージは消えました。
原因
配列 $validate に値が入っている場合だけ、処理を実行させる必要がある模様。
下記の参考記事によると「PHPのバージョンが7.3以前」はnullを返していたが、7.4からは返さなくなったため、その場合は isset で検査するのが解決方法と明記され参考にさせて頂きました。この場ですが、記事主様に謝辞。
参考記事
Qiita phpでTrying to access array offset on value of type null エラーと軽めの対処法