web-dev-qa-db-fra.com

Comment définir un modèle spécifique pour les sous-catégories?

Quelques articles expliquent comment faire en sorte que les sous-catégories utilisent le même modèle que leurs parents, mais je souhaite faire quelque chose de légèrement différent.

J'ai une catégorie 67 et je veux que toutes les sous-catégories de 67 utilisent un modèle spécifique. Pas le modèle par défaut, ni le modèle personnalisé category-67.php.

Comment je fais ça?

J'ai le code suivant dans functions.php, mais il semble également changer le modèle de la catégorie-67

// use specific template depending on category
function myTemplateSelect() {
    if (is_category() && !is_feed()) {
        if (is_category(get_cat_id('67')) || cat_is_ancestor_of(get_cat_id('67'), get_query_var('cat'))) {
            load_template(TEMPLATEPATH . '/category-slider.php');
            exit;
        }
    }
}

 add_action('template_redirect', 'myTemplateSelect');

Finalement, je souhaiterai ajouter quelques catégories supplémentaires à cela également.

Des idées?

Merci

1
C-M

Je recommanderais d'utiliser le filtre category_template - il suffit de vérifier si la catégorie actuelle est un ancêtre de 67:

function wpse_179617_category_template( $template ) {
    if ( cat_is_ancestor_of( 67, get_queried_object_id() /* The current category ID */ ) )
        $template = locate_template( 'category-slider.php' );
    return $template;
}

add_filter( 'category_template', 'wpse_179617_category_template' );
4
TheDeadMedic