WordPress用プラグイン「IP Location Block」で警告メッセージが出た時の対処例




トップページへ

※当方は記事として書いただけですので、参考にされた場合のいかなる問題にも当方はすべての責任を負いかねます。

 

対処に必要な知識

PHPの基礎レベル

 

症状

時期

・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 エラーと軽めの対処法

【PR】 WordPress用プラグイン「IP (amazon) *見つからない場合があります.

【PR】 WordPress用プラグイン「IP (楽天市場) *見つからない場合があります.




ほかの ワードプレス の記事

WordPressの自動アップグレードによるトラブル

WordPress 6.1.1→6.2にアップデートしたらInternal Server Error 500

[WordPress] 自分だけのプラグインを作る

[WordPress]何のテーブル?

[エックスサーバー]サブドメイン設定, WordPress簡単移行