WordPress REST APIを無効化する方法



REST APIを使うと、外部からWordPressのサイトデータを取得・投稿・編集することができます。

たとえば、サイトドメインの後に「/wp-json/wp/v2/」を付けると、このようにサイトのデータがずらっと表示されます。

2017年には脆弱性が発覚し、多くのサイトが改ざんの被害を受けました。
以降WordPressのアップデートにより脆弱性はないようですが、心配な場合はREST APIを無効化しておくと良いです。

REST APIを無効化する方法

functions.phpにこのコードを追記します。

function disable_rest_api() {
return new WP_Error( 'disabled', __( 'REST API is disabled.' ), 
array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_authentication_errors', 'disable_rest_api' );

すると、アクセスされても401や403で返すので安心です。

※WordPress6.1.1で確認済

REST APIを無効化するデメリット

プラグインの動作に影響がある場合がある

代表的なのはこの3つ。

contact-form-7は、REST APIを無効化してもWordPress6.1.1で問題なく動作しました。
akismetとJetpackは使っていないので不明。

もし不都合が生じた場合は、わいひらさんの特定のプラグインを除いてREST APIを無効にする方法を参考にすると良いかと。

サイトヘルスに表示される

これウザいので「表示オプションでサイトヘルス自体をオフ」にしています。