|
31 | 31 | * |
32 | 32 | * @return string The post content. |
33 | 33 | */ |
34 | | -function content_replacement( $content ) { |
35 | | - $use_wp_domain_for_permalinks = ! domain_replacement_enabled(); |
36 | | - $use_wp_domain_for_media = use_wp_domain_for_media(); |
| 34 | +function content_replacement( string $content ): string { |
37 | 35 |
|
38 | | - if ( $use_wp_domain_for_permalinks && $use_wp_domain_for_media ) { |
| 36 | + $replace_content_urls = domain_replacement_enabled(); |
| 37 | + $replace_media_urls = ! use_wp_domain_for_media(); |
| 38 | + |
| 39 | + if ( ! $replace_content_urls && ! $replace_media_urls ) { |
| 40 | + return $content; |
| 41 | + } |
| 42 | + |
| 43 | + $wp_site_urls = faustwp_get_wp_site_urls(); |
| 44 | + if (empty($wp_site_urls)) { |
39 | 45 | return $content; |
40 | 46 | } |
41 | 47 |
|
42 | | - $replacement = faustwp_get_setting( 'frontend_uri' ); |
43 | | - if ( ! $replacement ) { |
44 | | - $replacement = '/'; |
| 48 | + $wp_media_urls = faustwp_get_wp_media_urls(); |
| 49 | + $relative_upload_url = faustwp_get_relative_upload_url( $wp_site_urls ); |
| 50 | + $frontend_uri = faustwp_get_setting( 'frontend_uri' ); |
| 51 | + if ( ! $frontend_uri ) { |
| 52 | + $frontend_uri = '/'; |
45 | 53 | } |
46 | 54 |
|
47 | | - $site_url = site_url(); |
48 | | - $media_dir = str_replace( $site_url, '', wp_upload_dir()['baseurl'] ); |
49 | | - $media_url = $site_url . $media_dir; |
| 55 | + if ( $replace_content_urls && $replace_media_urls ) { |
| 56 | + |
| 57 | + foreach ( $wp_site_urls as $site_url ) { |
| 58 | + $content = str_replace( $site_url, $frontend_uri, $content ); |
| 59 | + } |
50 | 60 |
|
51 | | - if ( $use_wp_domain_for_permalinks && ! $use_wp_domain_for_media ) { |
52 | | - $content = str_replace( $media_url, $replacement . $media_dir, $content ); |
53 | 61 | return $content; |
54 | 62 | } |
55 | 63 |
|
56 | | - if ( ! $use_wp_domain_for_permalinks && ! $use_wp_domain_for_media ) { |
57 | | - $content = str_replace( $site_url, $replacement, $content ); |
| 64 | + |
| 65 | + if ( $replace_media_urls ) { |
| 66 | + $wp_media_site_url = $frontend_uri . $relative_upload_url; |
| 67 | + |
| 68 | + foreach ( $wp_media_urls as $media_url ) { |
| 69 | + $content = str_replace( $media_url, $wp_media_site_url, $content ); |
| 70 | + } |
| 71 | + |
58 | 72 | return $content; |
59 | 73 | } |
60 | 74 |
|
61 | | - if ( ! $use_wp_domain_for_permalinks && $use_wp_domain_for_media ) { |
62 | | - $content = preg_replace( "#{$site_url}(?!{$media_dir})#", "{$replacement}", $content ); |
63 | | - return $content; |
| 75 | + foreach ( $wp_site_urls as $site_url ) { |
| 76 | + $pattern_exclude_media_urls = "#" . preg_quote( $site_url, '#' ) . "(?!{$relative_upload_url}(\/|$))#"; |
| 77 | + $content = preg_replace( $pattern_exclude_media_urls, $frontend_uri, $content ); |
64 | 78 | } |
65 | 79 |
|
66 | 80 | return $content; |
@@ -102,6 +116,7 @@ function image_source_srcset_replacement( $sources ) { |
102 | 116 | $frontend_uri = faustwp_get_setting( 'frontend_uri' ); |
103 | 117 | $site_url = site_url(); |
104 | 118 |
|
| 119 | + |
105 | 120 | /** |
106 | 121 | * For urls with no domain or the frontend domain, replace with the WP site_url. |
107 | 122 | * This was the default replacement pattern until Faust 1.2, at which point this |
|
0 commit comments