Использование пользовательского шаблона для определенных URL
Я создаю простой сайт с двумя языками. Использую Polylang для записей, а также имею пользовательский тип записи "Artist". Чтобы упростить бэкенд, я не использую Polylang для этого типа, только несколько пользовательских полей для языка у каждого исполнителя.
Когда я загружаю site.com/artist/johnny-cash, используется шаблон single-artist.php в моей теме. Вопрос: как мне загрузить пользовательский шаблон при загрузке, например, site.com/en/artist/johnny-cash?
То есть вкратце:
site.com/artist/johnny-cash → Загружает single-artist.php (отлично)
site.com/en/artist/johnny-cash → Как перенаправить на пользовательский шаблон?

Спасибо @Milo за комментарии, я публикую свой ответ:
Сначала я добавил это правило:
add_rewrite_rule(
"en/artist/([^/]+)/?",
'index.php?pagename=post_type=artist&artist=$matches[1]&gal_template=en',
"top");
Затем этот фильтр:
add_filter( 'query_vars', 'gal_query_vars' );
function gal_query_vars( $query_vars )
{
$query_vars[] = 'gal_template';
return $query_vars;
}
И наконец, отфильтровал шаблон single:
add_filter( 'single_template', 'get_custom_post_type_template' );
function get_custom_post_type_template($single_template) {
global $post;
if ($post->post_type == 'artist') {
$q = get_query_var('gal_template');
if ($q === 'en') {
$single_template = dirname( __FILE__ ) . '/single-artist-en.php';
}
}
return $single_template;
}
Затем в single-artist-en.php я сделал:
get_template_part('single-artist')
Но вы можете реализовать любую необходимую логику.

Вот актуальное и полное решение от WordPress: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule
