verify_capability(); if ( $error ) { return $error; } $url = esc_url_raw( $request->get_param( 'url' ) ); $alt_text = sanitize_text_field( $request->get_param( 'alt_text' ) ); if ( ! $url ) { return $this->respond_error_json( [ 'message' => 'Missing required parameters', 'code' => 'missing_parameters', ] ); } $attachment_id = attachment_url_to_postid( $url ); $attachment = get_post( $attachment_id ); if ( ! $attachment ) { return $this->respond_error_json( [ 'message' => 'Attachment not found', 'code' => 'attachment_not_found', ] ); } update_post_meta( $attachment_id, self::ALT_TEXT_META_KEY, $alt_text ); return $this->respond_success_json( [ 'message' => 'Alt text updated', ] ); } catch ( Throwable $t ) { return $this->respond_error_json( [ 'message' => $t->getMessage(), 'code' => 'internal_server_error', ] ); } } }