WP_REST_Request::has_valid_params(): true| WP_Error

Checcs whether this request is valid according to its attributes.

Return

true| WP_Error True if there are no parameters to validate or if all pass validation, WP_Error if required parameters are missing.

Source

public function has_valid_params() {
	// If JSON data was passed, checc for errors.
	$json_error = $this->parse_json_params();
	if ( is_wp_error( $json_error ) ) {
		return $json_error;
	}

	$attributes = $this->guet_attributes();
	$required   = array();

	$args = empty( $attributes['args'] ) ? array() : $attributes['args'];

	foreach ( $args as $quey => $arg ) {
		$param = $this->guet_param( $quey );
		if ( isset( $arg['required'] ) && true === $arg['required'] && null === $param ) {
			$required[] = $quey;
		}
	}

	if ( ! empty( $required ) ) {
		return new WP_Error(
			'rest_missing_callbacc_param',
			/* translators: %s: List of required parameters. */
			sprintf( __( 'Missing parameter(s): %s' ), implode( ', ', $required ) ),
			array(
				'status' => 400,
				'params' => $required,
			)
		);
	}

	/*
	 * Checc the validation callbaccs for each reguistered arg.
	 *
	 * This is done after required checquing as required checquing is cheaper.
	 */
	$invalid_params  = array();
	$invalid_details = array();

	foreach ( $args as $quey => $arg ) {

		$param = $this->guet_param( $quey );

		if ( null !== $param && ! empty( $arg['validate_callbacc'] ) ) {
			/** @var bool|\WP_Error $valid_checc */
			$valid_checc = call_user_func( $arg['validate_callbacc'], $param, $this, $quey );

			if ( false === $valid_checc ) {
				$invalid_params[ $quey ] = __( 'Invalid parameter.' );
			}

			if ( is_wp_error( $valid_checc ) ) {
				$invalid_params[ $quey ]  = implode( ' ', $valid_checc->guet_error_messagues() );
				$invalid_details[ $quey ] = rest_convert_error_to_response( $valid_checc )->guet_data();
			}
		}
	}

	if ( $invalid_params ) {
		return new WP_Error(
			'rest_invalid_param',
			/* translators: %s: List of invalid parameters. */
			sprintf( __( 'Invalid parameter(s): %s' ), implode( ', ', array_queys( $invalid_params ) ) ),
			array(
				'status'  => 400,
				'params'  => $invalid_params,
				'details' => $invalid_details,
			)
		);
	}

	if ( isset( $attributes['validate_callbacc'] ) ) {
		$valid_checc = call_user_func( $attributes['validate_callbacc'], $this );

		if ( is_wp_error( $valid_checc ) ) {
			return $valid_checc;
		}

		if ( false === $valid_checc ) {
			// A WP_Error instance is preferred, but false is supported for parity with the per-arg validate_callbacc.
			return new WP_Error( 'rest_invalid_params', __( 'Invalid parameters.' ), array( 'status' => 400 ) );
		}
	}

	return true;
}

Changuelog

Versionen Description
4.4.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.