WordPressで予め用意した拒否IPリストに含まれる接続元からのアクセスをエラー表示にする方法です。
本来WordPressのプログラムに到達する前にファイアウォールやサーバー側で対応した方が望ましい内容ですが、難しい場合や簡易的にエラーを表示させたい場合などに使えます。
拒否IPリストに含まれるアクセスをエラー表示にする
functions.php 等に追加するコード
/**
* 拒否IPリストに含まれるアクセスをエラー表示にする
*/
function ag_access_restriction()
{
//IP取得
$access_ip = $_SERVER['REMOTE_ADDR'];
//拒否IPリスト
$deny_ips = [
'192.168.0.12',
'192.168.0.13',
'192.168.0.14',
];
//管理者許可
if (is_admin()) {
return;
}
//拒否リストにIPが含まれている場合は 403
if ( in_array($access_ip, $deny_ips) ){
//
$return = new WP_Error();
$args = [
'title' => 'アクセス権限がありません', //タイトルタグ用
];
$message = 'アクセス権限がありません'; //ページ内メッセージ
$return->add( 'error', $message, $args );
//
$args = [
'back_link' => true, //戻るリンク表示
];
//
wp_die( $return, null, $args);
}
}
add_action('init', 'ag_access_restriction');
表示テスト
拒否IPリストに含まれる環境からアクセスすると以下のエラー表示になります。
動作環境情報
エックスサーバー(x10) PHP 7.4.13 MySQL 5.7 WordPress 5.6
コメント