MENU

rest_authentication_errors– Hook –

rest_authentication_errors は、WordPressのREST APIで認証エラーを処理するために使用されるフックです。APIリクエストの認証に問題がある場合、このフックを使ってエラーメッセージをカスタマイズしたり、認証エラーを無効化することが可能です。

目次

機能の説明

rest_authentication_errors フックは、REST APIの認証処理の一環として呼び出されます。リクエストが正常に認証されているかどうかを確認し、必要に応じてエラーを返します。このフックを利用して、認証エラーを独自のロジックに置き換えたり、エラーメッセージを調整できます。

シンプルなコード例

add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('not_logged_in', 'ログインが必要です。', ['status' => 401]);
    }
    return $result;
});

使い方の解説

rest_authentication_errors フィルターフックは、REST APIの認証段階で呼び出され、認証が必要なリクエストの適切な処理を行います。デフォルトでは、認証に失敗するとHTTPステータスコード401や403で応答します。

引数

$result

認証の結果。
この引数には次のいずれかが渡されます:

  • null: 認証エラーは発生していない。
  • WP_Error オブジェクト: 認証エラーが発生した場合、エラーメッセージやコードを含む。
  • true: 認証が成功した場合。

戻り値

null

認証エラーなし(次の認証段階に進む)。

WP_Error

認証エラーがある場合、HTTPステータスコードとメッセージを含むエラーオブジェクトを返す。

true

認証が成功した場合。

オプション

このフック自体にはオプションはありませんが、追加のデータは WP_Error の第三引数で渡すことができます。

使用例

ソースコード例

add_filter('rest_authentication_errors', function($result) {
    if (is_wp_error($result)) {
        return $result; // 既存のエラーがある場合はそのまま返す
    }

    if (!is_user_logged_in()) {
        return new WP_Error('not_logged_in', 'この操作にはログインが必要です。', ['status' => 401]);
    }

    return $result; // 認証エラーなし
});
  1. フィルターに $result が渡され、既存のエラーがないかチェックします。
  2. ユーザーが未ログインの場合、401エラーを返します。
  3. 認証に問題がなければ $result をそのまま返します。

一緒に使うことが多い関連タグ

is_user_logged_in()

ユーザーがログインしているかどうかを確認します。

if (is_user_logged_in()) {
    echo 'ログインしています。';
} else {
    echo 'ログインが必要です。';
}

is_wp_error()

変数が WP_Error オブジェクトかどうかを確認します。

if (is_wp_error($result)) {
    echo 'エラーメッセージ: ' . $result->get_error_message();
}

追加情報を取得したい場合

REST APIの認証に関連する追加情報を取得するには、以下のようなタグやフックを使います。

wp_get_current_user() で現在のユーザー情報を取得

$current_user = wp_get_current_user();
echo 'ユーザー名: ' . $current_user->user_login;

出力できる情報

  • user_login: ユーザー名
  • user_email: メールアドレス
  • roles: ユーザーのロール(権限)

想定されるトラブル

認証が必要なAPIエンドポイントにアクセスできない

認証が必要な場合、適切なトークンまたはログインセッションを確保します。rest_authentication_errors フィルターでエラーメッセージを確認することで、原因を特定できます。

既存の認証エラーが上書きされてしまう

$resultis_wp_error() を使い、既存のエラーをそのまま返すようにします。

Q&A

REST APIの認証に成功した場合、このフックは何を返しますか?

認証に成功した場合、このフックは true を返します。

認証に失敗した場合、どのようにエラーメッセージをカスタマイズしますか?

WP_Error オブジェクトを使って、エラーメッセージとHTTPステータスコードを指定します。

未ログインユーザーが認証が必要なAPIにアクセスした場合、どう処理されますか?

デフォルトではHTTPステータスコード401が返されますが、rest_authentication_errors フィルターでカスタマイズできます。

まとめ

rest_authentication_errors は、WordPress REST APIで認証エラーを処理するための重要なフィルターフックです。

未ログインユーザーのアクセス制限や、API認証エラーをカスタマイズする場面で活用されます。WP_Error オブジェクトを使い、エラーメッセージを柔軟に変更することができます。

カスタマイズ例

1