[WordPress]特定のURLへのアクセスを拒否する

2020年11月1日

本来アクセス制限はApacheとかNginx側とか、更にそれより上のレイヤーのセキュリティグループとかでやればいいんだけれども、なにか理由があってWordPressでやりたいとき用
下記のコードをfunctions.phpに記述する。

add_action('init', 'ip_restriction');
function ip_restriction() {

  $ip = "192.168.33.10";
  $reg = "/\/.*?\/wp-login.php/";

  if ( preg_match($reg, $_SERVER["REQUEST_URI"]) && $_SERVER["REMOTE_ADDR"] !== $ip ) {
    wp_die( "このページにはアクセスできません。"  , "page not found", array('responce' => 403));
  }
}

今回は/***/wp-login.phpっていうURLに対応してる。
これで該当URLにアクセスするとこんな感じになる。

ちなみにこんなことしなくてもIP Geo Blockっていうプラグインを使えばいいらしい