2010-06-25 7 views
7

J'ai un modèle de catégorie: catégorie projects.phpFaire les sous-catégories Wordpress Catégorie d'emploi Modèle

Cette catégorie a les sous-catégories, mais ils sont le modèle se référant à category.php pour obtenir des instructions au lieu de la catégorie parente. Comment faire pour que les sous-catégories renvoient aux modèles de catégories parents dans l'ordre en cascade des références de modèles?

* Remarque, je parle d'URL de niveau catégorie, pas de messages.

Répondre

12

Une façon de le faire est de connecter l'action template_redirect dans votre fichier functions.php:

function myTemplateSelect() { 
    if (is_category() && !is_feed()) { 
     if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) { 
      load_template(TEMPLATEPATH . '/category-projects.php'); 
      exit; 
     } 
    } 
} 

add_action('template_redirect', 'myTemplateSelect'); 
+0

Woooooahhhhhh! C'est génial! Existe-t-il un moyen de l'extraire plus loin et de l'appliquer à TOUTES les sous-catégories de TOUTES les catégories, plutôt que de les déclarer chacune littéralement? – Matrym

+0

La réponse de TheDeadMedic à votre question suivante devrait fonctionner. –

+1

http://stackoverflow.com/questions/3119961/make-all-wordpress-categories-use-their-parent-category-template fonction – Matrym

1

Autant que je sache; Selon la hiérarchie des templates wp, category-samplecat.php s'applique uniquement à une catégorie avec un nom de slug "samplecat". Il n'est donc pas possible de le faire de cette manière. Mais dans le fichier category.php (qui s'applique à toutes les catégories qui n'ont pas de fichier modèle spécial), vous pouvez effectuer une vérification conditionnelle si la catégorie actuelle est un enfant de "project" (en utilisant cette méthode dans mon answer à). votre autre question) et si oui, vous pouvez appliquer la même structure de category-projects.php ou inclure category-projects.php.

0

réponse de Richard fonctionne mais il fortement interférer avec d'autres plug-ins.

J'ai trouvé une meilleure alternative à l'aide add_filter & template_include comme l'exemple ci-dessous

add_filter('template_include', 'my_callback'); 

function my_callback($original_template) { 
    if (some_condition()) { 
     return SOME_PATH . '/some-custom-file.php'; 
    } else { 
     return $original_template; 
    } 
} 

Crédit https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

Questions connexes