Skip to content

Commit dcc27d2

Browse files
authored
Update force-https.php
1 parent d30524f commit dcc27d2

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

force-https.php

+29-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Plugin Name: Force HTTPS
44
Plugin URI: https://www.littlebizzy.com/plugins/force-https
55
Description: HTTPS enforcement for WordPress
6-
Version: 3.0.0
6+
Version: 2.1.0
77
Author: LittleBizzy
88
Author URI: https://www.littlebizzy.com
99
Requires PHP: 7.0
@@ -123,40 +123,57 @@ function force_https_filter_output( $content ) {
123123
add_filter( 'the_content', 'force_https_process_content', 20 );
124124
function force_https_process_content( $content ) {
125125
return preg_replace_callback(
126-
'#(<(?:a|area|audio|blockquote|button|canvas|del|embed|form|iframe|img|input|ins|link|meta|object|picture|q|script|source|style|svg|track|video)[^>]+\s(?:action|background|cite|classid|codebase|content|data-[^\s=]+|formaction|href|longdesc|manifest|ping|poster|src|srcdoc|srcset|style|usemap|xlink:href)=["\'])(http://|//)([^"\']+)#i',
126+
'#(<(?:a|img|script|iframe|link|source|form)[^>]+\s(?:href|src)=["\'])(http://|//)([^"\']+)#i',
127127
function( $matches ) {
128128
return $matches[1] . 'https://' . $matches[3];
129129
},
130130
$content
131131
);
132132
}
133133

134-
// enforce https for wp resource hints
134+
// force https inside inline script and style content
135+
add_filter( 'the_content', 'force_https_fix_scripts_styles', 20 );
136+
function force_https_fix_scripts_styles( $content ) {
137+
return preg_replace_callback(
138+
'#(<script.*?>|<style.*?>)(.*?)</(script|style)>#is',
139+
function( $matches ) {
140+
return $matches[1] . str_replace('http://', 'https://', $matches[2]) . '</' . $matches[3] . '>';
141+
},
142+
$content
143+
);
144+
}
145+
146+
// enforce https on wp resource hints to prevent mixed content issues
135147
add_filter( 'wp_resource_hints', 'force_https_fix_resource_hints', 20 );
136148
function force_https_fix_resource_hints( $urls ) {
149+
150+
// return unchanged if not an array
137151
if ( ! is_array( $urls ) ) {
138152
return $urls;
139153
}
154+
155+
// enforce https on each resource hint url
140156
foreach ( $urls as &$url ) {
141157
if ( is_string( $url ) ) {
142158
$url = set_url_scheme( $url, 'https' );
143159
} elseif ( is_array( $url ) && isset( $url['href'] ) ) {
144160
$url['href'] = set_url_scheme( $url['href'], 'https' );
145161
}
146162
}
163+
147164
return $urls;
148165
}
149166

150-
// enforce https on image srcsets
167+
// enforce https on image srcsets to prevent mixed content issues
151168
add_filter( 'wp_calculate_image_srcset', 'force_https_fix_image_srcsets', 999 );
152169
function force_https_fix_image_srcsets( $sources ) {
153170

154-
// exit if sources is not an array
171+
// return unchanged if sources is not an array
155172
if ( ! is_array( $sources ) ) {
156173
return $sources;
157174
}
158175

159-
// loop through each image source and enforce https
176+
// loop through each source and enforce https on urls
160177
foreach ( $sources as &$source ) {
161178
if ( isset( $source['url'] ) ) {
162179
$source['url'] = set_url_scheme( $source['url'], 'https' );
@@ -166,15 +183,20 @@ function force_https_fix_image_srcsets( $sources ) {
166183
return $sources;
167184
}
168185

169-
// ensure all urls in the upload directory use https
186+
// enforce https on urls in the upload directory to avoid insecure media links
170187
add_filter( 'upload_dir', 'force_https_fix_upload_dir', 999 );
171188
function force_https_fix_upload_dir( $uploads ) {
189+
190+
// enforce https on the main upload url
172191
if ( isset( $uploads['url'] ) ) {
173192
$uploads['url'] = set_url_scheme( $uploads['url'], 'https' );
174193
}
194+
195+
// enforce https on the base upload url
175196
if ( isset( $uploads['baseurl'] ) ) {
176197
$uploads['baseurl'] = set_url_scheme( $uploads['baseurl'], 'https' );
177198
}
199+
178200
return $uploads;
179201
}
180202

0 commit comments

Comments
 (0)