web-dev-qa-db-fra.com

Utiliser un modèle personnalisé sur certaines URL

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é?

1
Nacho

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.

2
Nacho