概要説明
REST APIを使用するとWordPress外部からウェブサイトのデータを取得することができるようになります。こちらの機能を使用していない場合は必要のない機能となりますので無効化するカスタマイズ。プラグインでREST APIを使用しているものもあるため特定の条件で有効化する方法も掲載。
~ 目次 ~
REST APIを無効化 ( 管理者、Contact Form 7 プラグイン は有効 )
/*----------------------------------------------------
REST APIを無効化 ( 記事を書ける人、Contact Form 7 は有効 )
----------------------------------------------------*/
if ( ! function_exists( 'disabled_restapi_except_plugin' ) ) {
function disabled_restapi_except_plugin( $result, $wp_rest_server, $request ) {
$route = $request->get_route();
// 記事を書ける人(管理者・編集者・投稿者)は除外
if ( current_user_can( 'edit_posts' ) ) {
return $result;
}
// Contact Form 7 は除外
if ( false !== strpos( $route, 'contact-form-7/' ) ) {
return $result;
}
return new WP_Error( 'rest_disabled', 'REST API is disabled.', array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'disabled_restapi_except_plugin', 10, 3 );
// rel="https://api.w.org/" の表示制御
remove_action( 'wp_head', 'rest_output_link_wp_head' );
}
以前のコードは除外が管理者だけだったので、編集者・投稿者がブロックエディターを開くと、保存や読み込みができなくなりました。また、WP_Error の引数の順番が違っていて、状態コードが付いていませんでした。記事を書ける人(edit_posts)を除外し、WP_Error を正しい形に直しました(2026/10/18)。他のサイトに記事を埋め込むカード(oEmbed)も止まる点に気をつけてください。
管理画面から作業する人には影響が無いように除外が必要です。サイトヘルスや記事編集などに影響がでてきます。
REST APIにアクセスして結果が変化したことを確認
https://サイトURL/wp-json/
{"code":"rest_disabled","message":"REST API is disabled.","data":{"status":401}}
有効後に上記json結果が表示されるようになっていれば無効化されています。
ソース内のREST API情報が非表示になっていることを確認
<link rel="https://api.w.org/" href="https://サイトURL/wp-json/" />
上記のタグが非表示になっているかを確認します。
Contact Form 7 プラグインを使用している場合は送信確認
お問合せフォームから正常にメールが送信されるかを確認してください。
Contact Form 7以外にもREST APIを使用しているプラグインがあるので、動作がおかしいと思ったらREST APIを有効にして正常動作することを確認してから無効化の除外条件を調整することをおすすめ致します。
All in One SEO プラグインを除外する場合 ( 複数条件指定 )
// Contact Form 7 はREST API を使用しているため除外
if( strpos( $namespace, 'contact-form-7/' ) !== false ){
return $result;
}
// All in One SEO はREST API を使用しているため除外
if( strpos( $namespace, 'aioseo/' ) !== false ){
return $result;
}
除外判定用の条件を確認する方法
$namespace をdebug.logに出力できるようにし、プラグイン利用画面を表示させることで実行パスを確認することができます。
プラグインで対応を行う場合 – SiteGuard WP Plugin
SiteGuard WP Plugin にてREST APIの無効化ができます。除外するプラグインなどもGUIで対応ができるのでおすすめですが、設定変更により管理画面が正常機能しなくなった場合に設定を元に戻せなくなる可能性があります。


