Reworked roots_relative_url again to account for more edge cases
This commit is contained in:
@@ -76,13 +76,20 @@ add_filter('get_search_query', 'roots_search_query');
|
|||||||
// inspired by http://www.456bereastreet.com/archive/201010/how_to_make_wordpress_urls_root_relative/
|
// inspired by http://www.456bereastreet.com/archive/201010/how_to_make_wordpress_urls_root_relative/
|
||||||
// thanks to Scott Walkinshaw (scottwalkinshaw.com)
|
// thanks to Scott Walkinshaw (scottwalkinshaw.com)
|
||||||
function roots_root_relative_url($input) {
|
function roots_root_relative_url($input) {
|
||||||
preg_match('/(https?:\/\/[^\/|"]+)/', $input, $matches);
|
$output = preg_replace_callback(
|
||||||
// make sure we aren't making external links relative
|
'/(https?:\/\/[^\/|"]+)([^"]+)?/',
|
||||||
if (isset($matches[0]) && strpos($matches[0], site_url()) === false) {
|
create_function(
|
||||||
return $input;
|
'$matches',
|
||||||
} else {
|
// if full URL is site_url, return a slash for relative root
|
||||||
return str_replace(end($matches), '', $input);
|
'if (isset($matches[0]) && $matches[0] === site_url()) { return "/";' .
|
||||||
}
|
// if domain is equal to site_url, then make URL relative
|
||||||
|
'} elseif (isset($matches[1]) && strpos($matches[1], site_url()) !== false) { return "$matches[2]";' .
|
||||||
|
// if domain is not equal to site_url, do not make external link relative
|
||||||
|
'} else { return $matches[0]; };'
|
||||||
|
),
|
||||||
|
$input
|
||||||
|
);
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_filter('bloginfo_url', 'roots_root_relative_url');
|
add_filter('bloginfo_url', 'roots_root_relative_url');
|
||||||
@@ -387,4 +394,4 @@ function roots_check_current($val) {
|
|||||||
return preg_match('/current-menu/', $val);
|
return preg_match('/current-menu/', $val);
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
Reference in New Issue
Block a user