wp-jsonのURLの変更方法【WordPress】

WordPressのREST APIのURLスラッグであるwp-jsonは、ユーザーが任意に変更することができます。

wp-jsonのURLを変更するメリット

初期状態のWordPressでは、誰でもREST APIを用いてユーザー名や登録メールアドレス等のユーザー情報を取得することができます。

まあ普通は取得しようとする人はいませんが、攻撃者からすると、この無防備なREST APIはとてもおいしい情報になります。

取得したユーザー名をもとにパスワード総当り攻撃をしたり、登録メールアドレスにスパムメールを送りつけたりできます。

そこで、考えたいのが、wp-jsonというURLスラッグの変更です。WordPressのREST APIを使い続ける場合であっても、wp-jsonではなく、別のスラッグを使うことで攻撃されにくくなります。

wp-jsonのURLの変更方法

変更方法はとてもカンタンで、次のコードをテーマのfunctions.phpに追記するだけです。

function change_rest_url_prefix($slug) {
    return 'custom-rest-slug';
}
add_filter( 'rest_url_prefix', 'change_rest_url_prefix', 10, 1);

WordPressフィルター「rest_url_prefix」

ここからは技術側面を解説します。

WordPressには、rest_url_prefixという、REST APIのスラッグを設定する際に呼び出されるフィルターがあります。

デフォルトではこのフィルターは何もしないので、wp-jsonというスラッグが使われるのですが、このフィルターで任意のスラッグ文字列を返すようにすると、REST APIのスラッグを変更することができます。

プラグインとの相性に注意

サイトで有名でないプラグインを使っている場合には、この変更には要注意です。

というのは、REST APIをwp-jsonから始まるURLで呼び出せることを前提として開発されているプラグインもあるからです。

個人が開発したプラグイン・制作会社が専用に開発したプラグインでは、そのような実装がなされているかもしれません。

一方で数万件以上のサイトで使われているようなプラグインであれば、問題ないことが大半。REST APIのURLを変更していても動作するように作られています。