Je veux qu'un article ait le modèle de la catégorie parente. Est-ce possible? Si oui, veuillez me guider un peu. Ou si un plugin est disponible, nommez-le.
Réponse
Trop de publicités?À partir de Wordpress 3.0, la logique dans wp-includes/template-loader.php
pour la sélection d'un modèle ressemble à ceci:
if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
$template = false;
if ( is_404() && $template = get_404_template() ) :
elseif ( is_search() && $template = get_search_template() ) :
elseif ( is_tax() && $template = get_taxonomy_template() ) :
elseif ( is_front_page() && $template = get_front_page_template() ) :
elseif ( is_home() && $template = get_home_template() ) :
elseif ( is_attachment() && $template = get_attachment_template() ) :
remove_filter('the_content', 'prepend_attachment');
elseif ( is_single() && $template = get_single_template() ) :
elseif ( is_page() && $template = get_page_template() ) :
elseif ( is_category() && $template = get_category_template() ) :
elseif ( is_tag() && $template = get_tag_template() ) :
elseif ( is_author() && $template = get_author_template() ) :
elseif ( is_date() && $template = get_date_template() ) :
elseif ( is_archive() && $template = get_archive_template() ) :
elseif ( is_comments_popup() && $template = get_comments_popup_template() ) :
elseif ( is_paged() && $template = get_paged_template() ) :
else :
$template = get_index_template();
endif;
if ( $template = apply_filters( 'template_include', $template ) )
include( $template );
return;
endif;
Vérification de get_category_template()
dans wp-includes/theme.php` nous voyons:
function get_category_template() {
$cat_ID = absint( get_query_var('cat') );
$category = get_category( $cat_ID );
$templates = array();
if ( !is_wp_error($category) )
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-$cat_ID.php";
$templates[] = "category.php";
$template = locate_template($templates);
return apply_filters('category_template', $template);
}
En supposant que votre catégorie est Foo
, que son slug est foo
, et que l'ID de catégorie Foo
est 17
, pour un article appartenant à la catégorie Foo
, Wordpress vérifiera les modèles suivants dans votre thème et utilisera le premier qu'il trouve:
- category-foo.php
- category-17.php
- category.php
Ainsi, tout ce que vous devriez avoir à faire est de créer un modèle nommé category-foo.php
dans le répertoire de votre thème, et définir la catégorie de votre article sur Foo
, et cet article sera rendu en utilisant le modèle category-foo.php
au lieu du modèle par défaut post.php
.
Ce mécanisme de sélection de modèles est présent depuis Wordpress 1.5, bien que la liste complète des types de modèles ait considérablement augmenté au fil des ans.
La documentation Wordpress à ce sujet peut être trouvée ici.