Index: src/wp-includes/class-http.php
===================================================================
--- src/wp-includes/class-http.php	(revision 40291)
+++ src/wp-includes/class-http.php	(working copy)
@@ -605,13 +605,70 @@
 	 * @param string|array $args Optional. Override the defaults.
 	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
 	 */
-	public function head($url, $args = array()) {
+	public function head( $url, $args = array() ) {
 		$defaults = array('method' => 'HEAD');
 		$r = wp_parse_args( $args, $defaults );
 		return $this->request($url, $r);
 	}
 
 	/**
+	 * Uses the PUT HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 4.8.0
+	 *
+	 * @param string       $url  The request URL.
+	 * @param string|array $args Optional. Override the defaults.
+	 *
+	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
+	 */
+	public function put( $url, $args = array() ) {
+		$defaults = array( 'method' => 'PUT' );
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request( $url, $r );
+	}
+
+	/**
+	 * Uses the DELETE HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 4.8.0
+	 *
+	 * @param string       $url  The request URL.
+	 * @param string|array $args Optional. Override the defaults.
+	 *
+	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error.
+	 */
+	public function delete( $url, $args = array() ) {
+		$defaults = array( 'method' => 'DELETE' );
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request( $url, $r );
+	}
+
+	/**
+	 * Uses the TRACE HTTP method.
+	 *
+	 * Used for sending data that is expected to be in the body.
+	 *
+	 * @access public
+	 * @since 4.8.0
+	 *
+	 * @param string       $url  The request URL.
+	 * @param string|array $args Optional. Override the defaults.
+	 *
+	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error.
+	 */
+	public function trace( $url, $args = array() ) {
+		$defaults = array( 'method' => 'TRACE' );
+		$r = wp_parse_args( $args, $defaults );
+		return $this->request( $url, $r );
+	}
+
+	/**
 	 * Parses the responses and splits the parts into headers and body.
 	 *
 	 * @access public
Index: src/wp-includes/http.php
===================================================================
--- src/wp-includes/http.php	(revision 40291)
+++ src/wp-includes/http.php	(working copy)
@@ -113,6 +113,72 @@
 }
 
 /**
+ * Retrieve the raw response from a safe HTTP request using the PUT method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_put( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->put( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from a safe HTTP request using the DELETE method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_delete( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->delete( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from a safe HTTP request using the TRACE method.
+ *
+ * This function is ideal when the HTTP request is being made to an arbitrary
+ * URL. The URL is validated to avoid redirection and request forgery attacks.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_safe_remote_trace( $url, $args = array() ) {
+	$args['reject_unsafe_urls'] = true;
+	$http = _wp_http_get_object();
+	return $http->trace( $url, $args );
+}
+
+/**
  * Retrieve the raw response from the HTTP request.
  *
  * The array structure is a little complex:
@@ -139,6 +205,9 @@
  *  - Default 'GET'  for wp_remote_get()
  *  - Default 'POST' for wp_remote_post()
  *  - Default 'HEAD' for wp_remote_head()
+ *  - Default 'PUT'  for wp_remote_put()
+ *  - Default 'DELETE' for wp_remote_delete()
+ *  - Default 'TRACE' for wp_remote_trace()
  *
  * @since 2.7.0
  *
@@ -205,6 +274,60 @@
 }
 
 /**
+ * Retrieve the raw response from the HTTP request using the PUT method.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_put( $url, $args = array() ) {
+	$http = _wp_http_get_object();
+	return $http->put( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from the HTTP request using the TRACE method.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_trace( $url, $args = array() ) {
+	$http = _wp_http_get_object();
+	return $http->trace( $url, $args );
+}
+
+/**
+ * Retrieve the raw response from the HTTP request using the DELETE method.
+ *
+ * @since 4.8.0
+ *
+ * @see wp_remote_request() For more information on the response array format.
+ * @see WP_Http::request() For default arguments information.
+ *
+ * @param string $url  Site URL to retrieve.
+ * @param array  $args Optional. Request arguments. Default empty array.
+ *
+ * @return WP_Error|array The response or WP_Error on failure.
+ */
+function wp_remote_delete( $url, $args = array() ) {
+	$http = _wp_http_get_object();
+	return $http->delete( $url, $args );
+}
+
+/**
  * Retrieve only the headers from the raw response.
  *
  * @since 2.7.0
