WordPress REST API を無効化 ( 管理者ログイン時、Contact Form 7 プラグイン利用時は有効 )

概要説明

REST APIを使用するとWordPress外部からウェブサイトのデータを取得することができるようになります。こちらの機能を使用していない場合は必要のない機能となりますので無効化するカスタマイズ。プラグインでREST APIを使用しているものもあるため特定の条件で有効化する方法も掲載。

functions.php
/*----------------------------------------------------
 REST APIを無効化 ( 管理者、Contact Form 7 は有効 )
----------------------------------------------------*/
if ( !function_exists( 'disabled_restapi_except_plugin' ) ){
    function disabled_restapi_except_plugin( $result, $wp_rest_server, $request ){
        $namespace = $request->get_route();

        // 管理者の場合除外
        if ( current_user_can( 'manage_options' ) ) {
            return $result;
        }

        // Contact Form 7 はreset api を使用しているため除外
        if( strpos( $namespace, 'contact-form-7/' ) !== false ){
            return $result;
        }

        return new WP_Error( 'rest_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' );
}

管理画面から作業する人には影響が無いように除外が必要です。サイトヘルスや記事編集などに影響がでてきます。

REST APIにアクセスして結果が変化したことを確認

https://サイトURL/wp-json/

{"code":"rest_disabled","message":{"status":401},"data":null}

有効後に上記json結果が表示されるようになっていれば無効化されています。

ソース内のREST API情報が非表示になっていることを確認

<link rel="https://api.w.org/" href="https://サイトURL/wp-json/" />

上記のタグが非表示になっているかを確認します。

Contact Form 7 プラグインを使用している場合は送信確認

お問合せフォームから正常にメールが送信されるかを確認してください。

Contact Form 7以外にもREST APIを使用しているプラグインがあるので、動作がおかしいと思ったらRESET APIを有効にして正常動作することを確認してから無効化の除外条件を調整することをおすすめ致します。

All in One SEO プラグインを除外する場合 ( 複数条件指定 )

functions.php
// Contact Form 7 はreset api を使用しているため除外
if( strpos( $namespace, 'contact-form-7/' ) !== false ){
    return $result;
}

// All in One SEO はreset api を使用しているため除外
if( strpos( $namespace, 'aioseo/' ) !== false ){
    return $result;
}

除外判定用の条件を確認する方法

$namespace をdebug.logに出力できるようにし、プラグイン利用画面を表示させることで実行パスを確認することができます。

WordPress REST API を無効化 ( 管理者ログイン時、Contact Form 7 プラグイン利用時は有効 )

プラグインで対応を行う場合 – SiteGuard WP Plugin

SiteGuard WP Plugin にてREST APIの無効化ができます。除外するプラグインなどもGUIで対応ができるのでおすすめですが、設定変更により管理画面が正常機能しなくなった場合に設定を元に戻せなくなる可能性があります。

WordPress REST API を無効化 ( 管理者ログイン時、Contact Form 7 プラグイン利用時は有効 )

WordPress Developer Resources

関連機能

  1. WordPress ショートリンク shortlink 短縮URLをソース内から削除する

  2. /?author=id でアクセスした時の投稿者アーカイブリダイレクトを無効にする

  3. WordPressで特定のCSS や JS を読み込ませないようにする

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

ファーストキスのような
強烈な行為と共に
海馬に記憶されたエピソードは
忘却しにくいのよ

STEINS;GATE
by 牧瀬紅莉栖

Profile

PAGE TOP
Amazon プライム対象