The problem is not that the function you’re using adds http:
, the problem is it adds no URL schema at all!
As a result, WP needs to add a URL schema to turn the host into a URL, and so it uses http://
. It has no way of knowing what the original was, or if the host supports HTTPS, so http://
is the safe bet.
If however you passed the array with URL schema added, it would be passed through without issue.
Something like this may do the trick:
$hosts = wp_dependencies_unique_hosts();
$urls = array_map( function( $host ) {
return set_url_scheme( $host, 'https' );
}, $hosts );
In the longrun though, it would be better to get the actual URLs and distill the host URL out of them, rather than relying on wp_dependencies_unique_hosts
if you wanted to preserve the mixture of http
and https