This commit is contained in:
commit
2684a17e83
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
// Put this in wp-config.php and replace https://example.com/ with the URL of the production site.
|
||||
define( 'RH_USE_REMOTE_MEDIA_URL', 'https://example.com/' );
|
||||
|
||||
// Put the rest of this in functions.php or a custom plugin or somewhere else.
|
||||
if ( defined( 'RH_USE_REMOTE_MEDIA_URL' ) && ! empty( RH_USE_REMOTE_MEDIA_URL ) ) {
|
||||
add_filter( 'wp_get_attachment_image_src', array( $this, 'filter_wp_get_attachment_image_src' ) );
|
||||
add_filter( 'wp_calculate_image_srcset', array( $this, 'filter_wp_calculate_image_srcset' ) );
|
||||
add_filter( 'wp_get_attachment_url', array( $this, 'filter_wp_get_attachment_url' ) );
|
||||
}
|
||||
|
||||
function filter_wp_get_attachment_image_src( $image = array() ) {
|
||||
if ( ! is_array( $image ) || empty( $image ) ) {
|
||||
return $image;
|
||||
}
|
||||
$wp_upload_dir = wp_upload_dir();
|
||||
$base_dir = $wp_upload_dir['basedir'];
|
||||
$base_url = $wp_upload_dir['baseurl'];
|
||||
$absolute_path = str_replace( $base_url, $base_dir, $image[0] );
|
||||
if ( file_exists( $absolute_path ) ) {
|
||||
return $image;
|
||||
}
|
||||
$find = get_site_url();
|
||||
$replace = RH_USE_REMOTE_MEDIA_URL;
|
||||
$image[0] = str_replace( $find, $replace, $image[0] );
|
||||
return $image;
|
||||
}
|
||||
|
||||
function filter_wp_calculate_image_srcset( $src = array() ) {
|
||||
if ( is_array( $src ) && ! is_admin() ) {
|
||||
$wp_upload_dir = wp_upload_dir();
|
||||
$base_dir = $wp_upload_dir['basedir'];
|
||||
$base_url = $wp_upload_dir['baseurl'];
|
||||
$find = get_site_url();
|
||||
$replace = RH_USE_REMOTE_MEDIA_URL;
|
||||
foreach ( $src as $key => $val ) {
|
||||
$absolute_path = str_replace( $base_url, $base_dir, $val['url'] );
|
||||
if ( ! file_exists( $absolute_path ) ) {
|
||||
$val['url'] = str_replace( $find, $replace, $val['url'] );
|
||||
$src[ $key ] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $src;
|
||||
}
|
||||
|
||||
function filter_wp_get_attachment_url( $url = '' ) {
|
||||
if ( is_admin() ) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$wp_upload_dir = wp_upload_dir();
|
||||
$base_dir = $wp_upload_dir['basedir'];
|
||||
$base_url = $wp_upload_dir['baseurl'];
|
||||
$find = get_site_url();
|
||||
$replace = RH_USE_REMOTE_MEDIA_URL;
|
||||
$absolute_path = str_replace( $base_url, $base_dir, $url );
|
||||
if ( ! file_exists( $absolute_path ) ) {
|
||||
$url = str_replace( $find, $replace, $url );
|
||||
}
|
||||
return $url;
|
||||
}
|
Reference in New Issue