WordPress 拒否IPリストに含まれる接続元からのアクセスをエラー表示にする

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

コメント

タイトルとURLをコピーしました