feat(wpmc S4): Helpers::is_routable_path with page_no_rep exclusions
This commit is contained in:
@@ -111,4 +111,28 @@ final class Helpers
|
|||||||
}
|
}
|
||||||
return is_string($value) && $value !== '' ? $value : null;
|
return is_string($value) && $value !== '' ? $value : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function is_routable_path(?string $path = null): bool
|
||||||
|
{
|
||||||
|
if ($path === null) {
|
||||||
|
$path = $_SERVER['REQUEST_URI'] ?? '/';
|
||||||
|
}
|
||||||
|
if (!\function_exists('get_field')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
$exclusions = \get_field('page_no_rep', 'option');
|
||||||
|
if (!is_array($exclusions) || $exclusions === []) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
foreach ($exclusions as $row) {
|
||||||
|
if (!is_array($row) || empty($row['link'])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$needle = (string) $row['link'];
|
||||||
|
if ($needle !== '' && strpos($path, $needle) !== false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,4 +231,38 @@ final class HelpersTest extends TestCase
|
|||||||
|
|
||||||
self::assertNull(Helpers::main_town_slug());
|
self::assertNull(Helpers::main_town_slug());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_is_routable_path_returns_true_when_no_exclusions(): void
|
||||||
|
{
|
||||||
|
\Brain\Monkey\Functions\expect('get_field')
|
||||||
|
->once()
|
||||||
|
->with('page_no_rep', 'option')
|
||||||
|
->andReturn(false);
|
||||||
|
|
||||||
|
self::assertTrue(Helpers::is_routable_path('/foo/bar/'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_is_routable_path_returns_false_when_path_matches_exclusion(): void
|
||||||
|
{
|
||||||
|
\Brain\Monkey\Functions\expect('get_field')
|
||||||
|
->once()
|
||||||
|
->with('page_no_rep', 'option')
|
||||||
|
->andReturn([
|
||||||
|
['link' => '/privacy/'],
|
||||||
|
['link' => '/terms/'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
self::assertFalse(Helpers::is_routable_path('/privacy/'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_is_routable_path_uses_request_uri_when_path_null(): void
|
||||||
|
{
|
||||||
|
$_SERVER['REQUEST_URI'] = '/terms/';
|
||||||
|
\Brain\Monkey\Functions\expect('get_field')
|
||||||
|
->once()
|
||||||
|
->with('page_no_rep', 'option')
|
||||||
|
->andReturn([['link' => '/terms/']]);
|
||||||
|
|
||||||
|
self::assertFalse(Helpers::is_routable_path());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user