web-dev-qa-db-fra.com

Définir plusieurs modèles par publication

Dans Joomla! les articles peuvent utiliser plusieurs modèles. Je ne pouvais mettre que la fin de l'URL? Template = nom_templat et article utilise le modèle "nom_templat".

Est-ce possible dans Wordpress?

Oui, ça l'est. Mais non par défaut.

Mais c'est assez facile de le faire soi-même.

Vous pouvez le faire de 2 manières:

1. Dans le fichier de modèle single.php

Ajoutez simplement une instruction if et utilisez get_template_part pour charger le modèle sélectionné.

Donc, votre fichier single.php pourrait ressembler à ceci:

<?php
if ( isset($_GET['template']) ) {
    switch ($_GET['template']) {
        case 'a':
            get_template_part('single-post-template-a');
            break;
        ...        
    }
} else {
    get_template_part('single-post-template-default');
}

2. En utilisant single_template hook.

function get_custom_post_type_template($single_template) {
     global $post;

     if ($post->post_type == 'post' && isset($_GET['template']) ) {
          switch ( $_GET['template'] ) {
               case 'a':
                   return locate_template( array('/single-post-template-a.php') );
                   break;
               ...
          }
     }
     return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
2
Krzysiek Dróżdż