it-swarm.com.de

Verwenden Sie für bestimmte URLs eine benutzerdefinierte Vorlage

Ich baue eine einfache zweisprachige Site auf. Ich verwende Polylang für Posts und habe auch den benutzerdefinierten Post-Typ "Artist". Um es im Back-End einfach zu halten, verwende ich nicht Polylang, sondern nur ein paar benutzerdefinierte Felder für die Sprache jedes Künstlers.

Beim Laden von site.com/artist/johnny-cash verwende ich das Template single-artist.php für mein Theme. Die Frage ist, wie ich es schaffen würde, eine benutzerdefinierte Vorlage zu laden, wenn ich zum Beispiel site.com/de/artist/johnny-cash lade.

Also im Grunde das:

site.com/artist/johnny-cash -> Lädt single-artist.php (genial)

site.com/de/artist/johnny-cash -> Wie leite ich zu einer benutzerdefinierten Vorlage um?

1
Nacho

Vielen Dank an @Milo für die Kommentare, ich werde meine Antwort posten:

Zuerst habe ich diese Regel hinzugefügt:

add_rewrite_rule(  
    "en/artist/([^/]+)/?",  
    'index.php?pagename=post_type=artist&artist=$matches[1]&gal_template=en',
    "top"); 

Dann dieser Filter:

add_filter( 'query_vars', 'gal_query_vars' );
function gal_query_vars( $query_vars )
{
    $query_vars[] = 'gal_template';
    return $query_vars;
}

Zum Schluss habe ich die einzelne Vorlage gefiltert:

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;
}

Dann habe ich auf single-artist-en.php folgendes gemacht:

get_template_part('single-artist')

Aber du könntest tun, was immer du brauchst.

2
Nacho