web-dev-qa-db-fra.com

Types de publication personnalisés sur les pages de catégorie

Je travaille avec un type de message personnalisé qui utilise les catégories WordPress normales.
Je suis en mesure de modifier mon modèle de catégorie pour afficher mes types de publication personnalisés exactement comme je les veux.

Le problème est que, une fois que je fais cela, les articles de blog normaux sont également affectés.

Bien sûr, je peux limiter les articles de blog normaux ou le type d’article à une seule catégorie et créer un fichier category-ID.php qui ne fonctionne qu'avec cette catégorie.

Mais je me demande s’il existe une solution plus flexible.
Est-il possible de créer des modèles de catégories spécifiques aux types de publication, par exemple un pour afficher les publications, un autre pour afficher les types de publication personnalisés, etc.?

est-ce possible? Si non, quel est le meilleur moyen de contourner cela?

6
Kelvin Jayanoris

Pour les types d'articles personnalisés avec taxonomie personnalisée, vous pouvez créer un modèle pour cette taxonomie. Votre modèle de taxonomie personnalisé serait nommé taxonomy-{taxonomy}.php. Par exemple, si votre taxonomie s'appelait "cuisson-catégories", vous nommeriez votre fichier taxonomy-cooking-categories.php.

Vous trouverez plus d'informations sur les fichiers modèles pour les archives de taxonomie spéciales dans le codex, à l'adresse suivante: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

6
eileencodes

Vous pouvez vous baser sur le type de message comme suit: dites que vous avez category.php pour les messages normaux et your-custom-type-category.php pour vos messages de type message personnalisé, puis ajoutez-le simplement à votre category.php normal tout en haut.

<?php if (have_posts()){
    the_post();
    if( 'your_custom_type' == get_post_type( $post ) ) {
        rewind_posts();
        get_template_part('your-custom-type-category');
        exit();
    }
    rewind_posts();
}
?>

et maintenant, chaque fois qu'une catégorie est demandée, elle vérifie votre type de publication personnalisé et, si elle est trouvée, elle utilisera votre your-custom-type-category.php comme modèle et toutes les publications standard s'afficheront à l'aide de category.php sans modification.

J'espère que cela t'aides

4
Bainternet

Bonjour @ Kelvin Jayanoris:

Y a-t-il une raison pour laquelle vous ne pouvez pas simplement tester la valeur de $post->post_type avec une instruction if..elseif dans votre Loop , comme ceci:

<?php if ($post->post_type=='foo'): ?>

   Put HTML for 'foo' post type here...

<?php else if ($post->post_type=='bar'): ?>

   Put HTML for 'bar' post type here...

<?php else if ($post->post_type=='post'): ?>

   Put HTML for 'post' post type here...

<?php endif; ?>

Ou si vous ne pouvez pas créer votre propre hiérarchie de nom de fichier de modèle sous la forme de noms de fichier tels que post-foo.php, post-foo.php, post-post.php, également dans votre boucle? Celui-ci comme du code pourrait faire ça pour ça:

<?php include("post-{$post->post_type}.php"); ?>
1
MikeSchinkel