Cómo usar una plantilla personalizada en URLs específicas
Estoy construyendo un sitio simple con dos idiomas. Estoy usando Polylang para las entradas, y también tengo un tipo de contenido personalizado, "Artist". Para mantenerlo simple en el back-end, no estoy usando Polylang para esto, solo algunos campos personalizados para el idioma en cada artista.
Cuando cargo site.com/artist/johnny-cash estoy usando la plantilla single-artist.php en mi tema. La pregunta es, ¿cómo podría hacer para cargar una plantilla personalizada cuando accedo, por ejemplo, a site.com/en/artist/johnny-cash?
Básicamente, esto:
site.com/artist/johnny-cash -> Carga single-artist.php (perfecto)
site.com/en/artist/johnny-cash -> ¿Cómo redirijo a una plantilla personalizada?

Gracias a @Milo en los comentarios, voy a publicar mi respuesta:
Primero agregué esta regla:
add_rewrite_rule(
"en/artist/([^/]+)/?",
'index.php?pagename=post_type=artist&artist=$matches[1]&gal_template=en',
"top");
Luego este filtro:
add_filter( 'query_vars', 'gal_query_vars' );
function gal_query_vars( $query_vars )
{
$query_vars[] = 'gal_template';
return $query_vars;
}
Finalmente, filtré la plantilla 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;
}
Luego en single-artist-en.php hice:
get_template_part('single-artist')
Pero podrías hacer lo que necesites.

Aquí está la solución actual y completa de WordPress: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule
