WC_Download_Handler::parse_file_path() public WC 1.0
Parse file path and see if its remote or local.
{} Это метод класса: WC_Download_Handler{}
Хуков нет.
Возвращает
Массив.
Использование
$result = WC_Download_Handler::parse_file_path( $file_path );
- $file_path(строка) (обязательный)
- File path.
Код WC_Download_Handler::parse_file_path() WC Download Handler::parse file path WC 5.0.0
public static function parse_file_path( $file_path ) {
$wp_uploads = wp_upload_dir();
$wp_uploads_dir = $wp_uploads['basedir'];
$wp_uploads_url = $wp_uploads['baseurl'];
/**
* Replace uploads dir, site url etc with absolute counterparts if we can.
* Note the str_replace on site_url is on purpose, so if https is forced
* via filters we can still do the string replacement on a HTTP file.
*/
$replacements = array(
$wp_uploads_url => $wp_uploads_dir,
network_site_url( '/', 'https' ) => ABSPATH,
str_replace( 'https:', 'http:', network_site_url( '/', 'http' ) ) => ABSPATH,
site_url( '/', 'https' ) => ABSPATH,
str_replace( 'https:', 'http:', site_url( '/', 'http' ) ) => ABSPATH,
);
$file_path = str_replace( array_keys( $replacements ), array_values( $replacements ), $file_path );
$parsed_file_path = wp_parse_url( $file_path );
$remote_file = true;
// Paths that begin with '//' are always remote URLs.
if ( '//' === substr( $file_path, 0, 2 ) ) {
return array(
'remote_file' => true,
'file_path' => is_ssl() ? 'https:' . $file_path : 'http:' . $file_path,
);
}
// See if path needs an abspath prepended to work.
if ( file_exists( ABSPATH . $file_path ) ) {
$remote_file = false;
$file_path = ABSPATH . $file_path;
} elseif ( '/wp-content' === substr( $file_path, 0, 11 ) ) {
$remote_file = false;
$file_path = realpath( WP_CONTENT_DIR . substr( $file_path, 11 ) );
// Check if we have an absolute path.
} elseif ( ( ! isset( $parsed_file_path['scheme'] ) || ! in_array( $parsed_file_path['scheme'], array( 'http', 'https', 'ftp' ), true ) ) && isset( $parsed_file_path['path'] ) && file_exists( $parsed_file_path['path'] ) ) {
$remote_file = false;
$file_path = $parsed_file_path['path'];
}
return array(
'remote_file' => $remote_file,
'file_path' => $file_path,
);
}