Automattic\WooCommerce\Internal\Admin
SiteHealth::is_uploads_directory_protected
Check if the WooCommerce uploads directory is protected from directory browsing.
Method of the class: SiteHealth{}
No Hooks.
Returns
true|false|Array{unverified:. true}
Usage
// private - for code of main (parent) class only $result = $this->is_uploads_directory_protected();
SiteHealth::is_uploads_directory_protected() SiteHealth::is uploads directory protected code WC 11.0.0
private function is_uploads_directory_protected() {
$cache_key = '_woocommerce_upload_directory_status';
$status = get_transient( $cache_key );
if ( false !== $status ) {
if ( 'unverified' === $status ) {
return array( 'unverified' => true );
}
return 'protected' === $status;
}
$uploads = wp_get_upload_dir();
$response = wp_safe_remote_get(
esc_url_raw( $uploads['baseurl'] . '/woocommerce_uploads/' ),
array(
'redirection' => 0,
)
);
if ( is_wp_error( $response ) ) {
set_transient( $cache_key, 'unverified', HOUR_IN_SECONDS );
return array( 'unverified' => true );
}
$response_code = intval( wp_remote_retrieve_response_code( $response ) );
if ( 0 === $response_code ) {
set_transient( $cache_key, 'unverified', HOUR_IN_SECONDS );
return array( 'unverified' => true );
}
$response_content = wp_remote_retrieve_body( $response );
$is_protected = ( 200 === $response_code && empty( $response_content ) ) || ( 200 !== $response_code );
set_transient( $cache_key, $is_protected ? 'protected' : 'unprotected', DAY_IN_SECONDS );
return $is_protected;
}