feat(wpmc S3): Helpers::remove_domain_link via parse_url
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -82,4 +82,20 @@ final class Helpers
|
|||||||
$value = \get_field($selector, $post_id, $format_value);
|
$value = \get_field($selector, $post_id, $format_value);
|
||||||
return is_string($value) ? \do_shortcode($value) : $value;
|
return is_string($value) ? \do_shortcode($value) : $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function remove_domain_link(string $url): string
|
||||||
|
{
|
||||||
|
$parsed = parse_url($url);
|
||||||
|
if ($parsed === false || empty($parsed['scheme'])) {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
$scheme = strtolower((string) $parsed['scheme']);
|
||||||
|
if ($scheme !== 'http' && $scheme !== 'https') {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
$path = $parsed['path'] ?? '';
|
||||||
|
$query = isset($parsed['query']) ? '?' . $parsed['query'] : '';
|
||||||
|
$fragment = isset($parsed['fragment']) ? '#' . $parsed['fragment'] : '';
|
||||||
|
return $path . $query . $fragment;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,4 +188,13 @@ final class HelpersTest extends TestCase
|
|||||||
|
|
||||||
self::assertNull(Helpers::alt_get_field('anything'));
|
self::assertNull(Helpers::alt_get_field('anything'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_remove_domain_link_handles_various_url_shapes(): void
|
||||||
|
{
|
||||||
|
self::assertSame('/foo/bar/', Helpers::remove_domain_link('https://site.com/foo/bar/'));
|
||||||
|
self::assertSame('/foo?q=1#a', Helpers::remove_domain_link('http://site.com/foo?q=1#a'));
|
||||||
|
self::assertSame('/foo/', Helpers::remove_domain_link('/foo/'));
|
||||||
|
self::assertSame('mailto:x@y.com', Helpers::remove_domain_link('mailto:x@y.com'));
|
||||||
|
self::assertSame('not a url', Helpers::remove_domain_link('not a url'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user