函数文档

rest_application_password_check_errors()

💡 云策文档标注

概述

rest_application_password_check_errors() 函数用于在使用应用程序密码认证时检查错误。它处理来自其他认证处理器的结果,并返回相应的错误或成功状态。

关键要点

  • 参数 $result 可以是 WP_Error、null 或 true,用于传递其他认证处理器的错误或指示是否处理。
  • 返回值可以是 WP_Error(如果应用程序密码无效)、$result 或 true,具体取决于全局变量 $wp_rest_application_password_status 的状态。
  • 函数内部检查全局变量 $wp_rest_application_password_status,如果是 WP_Error 则添加状态码并返回,如果是 WP_User 则返回 true,否则返回 $result。

代码示例

function rest_application_password_check_errors( $result ) {
	global $wp_rest_application_password_status;

	if ( ! empty( $result ) ) {
		return $result;
	}

	if ( is_wp_error( $wp_rest_application_password_status ) ) {
		$data = $wp_rest_application_password_status->get_error_data();

		if ( ! isset( $data['status'] ) ) {
			$data['status'] = 401;
		}

		$wp_rest_application_password_status->add_data( $data );

		return $wp_rest_application_password_status;
	}

	if ( $wp_rest_application_password_status instanceof WP_User ) {
		return true;
	}

	return $result;
}

注意事项

  • 此函数自 WordPress 5.6.0 版本引入,用于 REST API 的应用程序密码认证流程。
  • 依赖全局变量 $wp_rest_application_password_status,需确保在调用前已正确设置。
  • 使用 is_wp_error() 检查错误,并自动为 WP_Error 添加默认状态码 401。

📄 原文内容

Checks for errors when using application password-based authentication.

Parameters

$resultWP_Error|null|truerequired
Error from another authentication handler, null if we should handle it, or another value if not.

Return

WP_Error|null|true WP_Error if the application password is invalid, the $result, otherwise true.

Source

function rest_application_password_check_errors( $result ) {
	global $wp_rest_application_password_status;

	if ( ! empty( $result ) ) {
		return $result;
	}

	if ( is_wp_error( $wp_rest_application_password_status ) ) {
		$data = $wp_rest_application_password_status->get_error_data();

		if ( ! isset( $data['status'] ) ) {
			$data['status'] = 401;
		}

		$wp_rest_application_password_status->add_data( $data );

		return $wp_rest_application_password_status;
	}

	if ( $wp_rest_application_password_status instanceof WP_User ) {
		return true;
	}

	return $result;
}

Changelog

Version Description
5.6.0 Introduced.