1 votes

Appliquer le modèle Wordpress de la catégorie aux articles

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.

2voto

Craig Trader Points 8924

À 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X