Je construis un site simple en deux langues. J'utilise Polylang pour les publications et j'ai également un type de publication personnalisé, "Artiste". Afin de garder les choses simples sur le back-end, je n'utilise pas Polylang, juste quelques champs personnalisés pour la langue de chaque artiste.
Lorsque je charge site.com/artist/johnny-cash, j'utilise le modèle single-artist.php sur mon thème. La question est de savoir comment je pourrais charger un modèle personnalisé, par exemple, site.com/en/artist/johnny-cash.
Donc, fondamentalement, ceci:
site.com/artist/johnny-cash -> Charge single-artist.php (génial)
site.com/fr/artist/johnny-cash -> Comment puis-je rediriger vers un modèle personnalisé?
Merci à @Milo pour les commentaires, je vais poster ma réponse:
Tout d'abord j'ai ajouté cette règle:
add_rewrite_rule(
"en/artist/([^/]+)/?",
'index.php?pagename=post_type=artist&artist=$matches[1]&gal_template=en',
"top");
Puis ce filtre:
add_filter( 'query_vars', 'gal_query_vars' );
function gal_query_vars( $query_vars )
{
$query_vars[] = 'gal_template';
return $query_vars;
}
Enfin, j'ai filtré le modèle unique:
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;
}
Puis sur single-artist-en.php j'ai fait:
get_template_part('single-artist')
Mais vous pouvez faire ce dont vous avez besoin.