Skip to content

Commit ca96ece

Browse files
committed
Fixed for content_replcament. Reverted method signature to allow for null values. Added unit tests and added a try and catch aswell to catch any future issues.
1 parent fc8bd26 commit ca96ece

File tree

2 files changed

+39
-32
lines changed

2 files changed

+39
-32
lines changed

plugins/faustwp/includes/replacement/callbacks.php

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -27,44 +27,43 @@
2727
/**
2828
* Callback for WordPress 'the_content' filter.
2929
*
30-
* @param string $content The post content.
30+
* @param null|string $content The post content.
3131
*
32-
* @return string The post content.
32+
* @return null|string The post content.
3333
*/
34-
function content_replacement( string $content ): string {
35-
36-
if ( ! $content ) {
37-
return '';
38-
}
39-
40-
$replace_content_urls = domain_replacement_enabled();
41-
$replace_media_urls = ! use_wp_domain_for_media();
34+
function content_replacement( $content ) {
4235

43-
if ( ! $replace_content_urls && ! $replace_media_urls ) {
44-
return $content;
45-
}
36+
try {
37+
if ( ! $content ) {
38+
return $content;
39+
}
40+
$replace_content_urls = domain_replacement_enabled();
41+
$replace_media_urls = ! use_wp_domain_for_media();
42+
if ( ! $replace_content_urls && ! $replace_media_urls ) {
43+
return $content;
44+
}
45+
$wp_site_urls = faustwp_get_wp_site_urls( site_url() );
46+
if ( empty( $wp_site_urls ) ) {
47+
return $content;
48+
}
49+
$relative_upload_url = faustwp_get_relative_upload_url( $wp_site_urls, wp_upload_dir()['baseurl'] );
50+
$wp_media_urls = faustwp_get_wp_media_urls( $wp_site_urls, $relative_upload_url );
51+
$frontend_uri = (string) faustwp_get_setting( 'frontend_uri' ) ?? '/';
52+
if ( $replace_content_urls && $replace_media_urls ) {
53+
return str_replace( $wp_site_urls, $frontend_uri, $content );
54+
}
55+
if ( $replace_media_urls ) {
56+
return str_replace( $wp_media_urls, $frontend_uri . $relative_upload_url, $content );
57+
}
58+
$site_urls_pattern = implode( '|', array_map( 'preg_quote', $wp_site_urls ) );
59+
$pattern = '#(' . $site_urls_pattern . ')(?!' . $relative_upload_url . '(\/|$))#';
4660

47-
$wp_site_urls = faustwp_get_wp_site_urls( site_url() );
48-
if ( empty( $wp_site_urls ) ) {
61+
return preg_replace( $pattern, $frontend_uri, $content );
62+
} catch ( \Exception $e ) {
63+
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
64+
error_log( 'Error replacing content URLs: ' . $e->getMessage() );
4965
return $content;
5066
}
51-
52-
$relative_upload_url = faustwp_get_relative_upload_url( $wp_site_urls, wp_upload_dir()['baseurl'] );
53-
$wp_media_urls = faustwp_get_wp_media_urls( $wp_site_urls, $relative_upload_url );
54-
$frontend_uri = (string) faustwp_get_setting( 'frontend_uri' ) ?? '/';
55-
56-
if ( $replace_content_urls && $replace_media_urls ) {
57-
return str_replace( $wp_site_urls, $frontend_uri, $content );
58-
}
59-
60-
if ( $replace_media_urls ) {
61-
return str_replace( $wp_media_urls, $frontend_uri . $relative_upload_url, $content );
62-
}
63-
64-
$site_urls_pattern = implode( '|', array_map( 'preg_quote', $wp_site_urls ) );
65-
$pattern = '#(' . $site_urls_pattern . ')(?!' . $relative_upload_url . '(\/|$))#';
66-
67-
return preg_replace( $pattern, $frontend_uri, $content );
6867
}
6968

7069
/**

plugins/faustwp/tests/integration/ReplacementCallbacksTests.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@ public function test_wp_calculate_image_srcset_filter(): void {
9292
self::assertSame( 10, has_action( 'wp_calculate_image_srcset', 'WPE\FaustWP\Replacement\image_source_srcset_replacement' ) );
9393
}
9494

95+
96+
/**
97+
* Test to make sure content rep can accept null values
98+
*/
99+
public function test_content_replacement_for_null_content_replacement() {
100+
$this->assertNull(content_replacement( null ) );
101+
}
102+
95103
/**
96104
* Tests content_replacement() returns original value when content replacement is not enabled.
97105
*/

0 commit comments

Comments
 (0)