Неужели в Вордпрессе нет возможности задать файл-шаблон любому урлу и я должен использовать вариант с index.php?
Есть возможность, можно использовать функцию
add_rewrite_rule() вместе с хуком
template_include:
function test_rewrite_rule(): void {
add_rewrite_rule('^catalog/?$', 'index.php?catalog_page=1', 'top');
}
add_action('init', 'test_rewrite_rule');
function test_query_var($vars) {
$vars[] = 'catalog_page';
return $vars;
}
add_filter('query_vars', 'test_query_var');
function test_include_catalog($template) {
if (get_query_var('catalog_page')) {
$new_template = locate_template(['catalog.php']);
if ('' != $new_template) {
return $new_template;
}
}
return $template;
}
add_filter('template_include', 'test_include_catalog');
Затем, создаем шаблон catalog.php в теме, и когда пользователь перейдет по site.com/catalog/, wp будет использовать catalog.php, без необходимости создавать страницу.