When WordPress is running inside of a sub-directory,
get_woocommerce_api_url() returns the domain along with the
sub-directory path, which results in a duplicate path when the API
request string is added. This commit fixes this by fetching only the
home host and adding the request path to it. set_url_scheme() is used
to set the scheme to either http or https based on the request itself
instead of basing it on whether force_ssl_checkout is enabled or not.
This commit completes the XML response handler and adjusts the output
format for all resources to include a top-level property that encloses
the response. This is more consistent with the multi-resource (e.g. GET
/orders) response.
Part of #4165
Based on WP_JSON_Server, this class add response handling based on
endpoint suffixes (.json or .xml) or the ACCEPT header. It also removes
some unneeded functionality and renames filters so as to not conflict
with users who may have WP-API installed already. Finally, instead of
no authentication required by default, authentication is always
required unless specifically disabled via filters.