Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: Fixes issues for content replacement for the site and media URLs #2014

Merged
merged 14 commits into from
Jan 14, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Refactoring some of the image srcset replacement.
colinmurphy committed Jan 10, 2025
commit 97706731fa55fc98f1a4d44e6f5bc0b901899991
42 changes: 18 additions & 24 deletions plugins/faustwp/includes/replacement/callbacks.php
Original file line number Diff line number Diff line change
@@ -61,11 +61,12 @@ function content_replacement( string $content ): string {
}

if ( $replace_media_urls ) {
return faustwp_replace_media_url( $content, $wp_media_urls, $frontend_uri . $relative_upload_url );
return str_replace( $wp_media_urls, $frontend_uri . $relative_upload_url, $content );
}

$site_urls_pattern = implode( '|', array_map( 'preg_quote', $wp_site_urls ) );
$pattern = '#(' . $site_urls_pattern . ')(?!' . $relative_upload_url . '(\/|$))#';

return preg_replace( $pattern, $frontend_uri, $content );
}

@@ -109,47 +110,40 @@ function image_source_srcset_replacement( $sources ) {
return $sources;
}

$replace_media_urls = ! use_wp_domain_for_media();
$wp_site_urls = faustwp_get_wp_site_urls();
$wp_site_urls = faustwp_get_wp_site_urls();
if ( empty( $wp_site_urls ) ) {
return $sources;
}

$replace_media_urls = ! use_wp_domain_for_media();
$wp_media_urls = faustwp_get_wp_media_urls( $wp_site_urls );
$relative_upload_url = faustwp_get_relative_upload_url( $wp_site_urls );
$frontend_uri = faustwp_get_setting( 'frontend_uri' );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please typecast here to make sure it is string with some default value.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not allowed by our phpcs settings 😅

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I was wrong here.

$site_url = site_url() . '/';

$wp_media_site_url = $frontend_uri . $relative_upload_url;
$patterns = array(
"#^{$frontend_uri}/#",
'#^/#',
);

/**
* Update each source with the correct replacement URL
*/
foreach ( $sources as $width => $source ) {
if ( ! $replace_media_urls ) {
$i = 0;
$url = preg_replace_callback(
$patterns,
function () use ( &$wp_site_urls, &$i ) {
$replacement = $wp_site_urls[ $i ] . '/';
$i++;

return $replacement;
},
$source['url']
);

$sources[ $width ]['url'] = $url;

continue;
}
$url = $source['url'];

if ( $replace_media_urls ) {
$url = ( strpos( $url, $relative_upload_url ) === 0 )
? $frontend_uri . $url
: str_replace( $wp_media_urls, $wp_media_site_url, $url );
} else {

if ( strpos( $source['url'], $relative_upload_url ) === 0 ) {
$sources[ $width ]['url'] = $frontend_uri . $source['url'];
continue;
// We need to make sure that the frontend URL or relative URL (legacy) is updated with the site url
$url = preg_replace( $patterns, $site_url, $url );
}

$sources[ $width ]['url'] = faustwp_replace_media_url( $source['url'], $wp_media_urls, $wp_media_site_url );
$sources[ $width ]['url'] = $url;
}

return $sources;
13 changes: 0 additions & 13 deletions plugins/faustwp/includes/replacement/functions.php
Original file line number Diff line number Diff line change
@@ -195,16 +195,3 @@ function faustwp_get_relative_upload_url( $site_urls ) {

return '';
}

/***
* Replaces the media URL for various media urls
*
* @param string $content The content to be updated with the new media URL.
* @param array $wp_media_urls An array of media URLS.
* @param string $replace_url The media URL to be updated to.
*
* @return string The replaced string
*/
function faustwp_replace_media_url( string $content, array $wp_media_urls, string $replace_url ) {
return str_replace( $wp_media_urls, $replace_url, $content );
}