web-dev-qa-db-fra.com

Modèles personnalisés pour les articles comme pour les pages: page- {id} vs single- {id}

Si je comprends bien, je peux créer un modèle personnalisé pour une page spécifique en créant un fichier appelé page-{my_page_title_or_id), qui s'affiche lorsque vous visitez cette page. Je peux également créer un modèle personnalisé pour les pages en ajoutant Template Name: My Page Type dans les commentaires d'en-tête.

Cependant, la situation avec les postes semble très différente. Autant que je sache, créer un fichier appelé single-{post_title_or_id) ne force pas l'affichage de ce fichier pour la publication donnée. Il semble ne rien faire du tout.

Je comprends que je peux créer un type de publication personnalisé et en afficher des instances avec single-{post_type_name}, ce qui est excellent. Toutefois, si je veux créer un modèle pour un article en particulier, cela semble excessif et je devrais inclure une logique conditionnelle lorsque l'identifiant/le titre de l'article correspond à celui que je souhaite afficher.

Est-ce que j'ai râté quelque chose? Ma compréhension de la situation est-elle correcte? S'il vous plaît, quelqu'un peut-il me dire le moyen le plus simple d'afficher une vue personnalisée pour un article avec un titre/identifiant donné?

3
Robin

A) Modèles à poste unique: single-{post-type}-{post-name}.php

Il est instructif de vérifier la fonction get_single_template() .

Nous trouvons ici les possibilités de modèles suivantes:

"single-{$object->post_type}-{$object->post_name}.php"
"single-{$object->post_type}.php"
"single.php"

Dans WordPress 4.7 cette partie sera ajoutée:

"single-{$object->post_type}-{$name_decoded}.php"    

Il semble donc que vous ayez oublié la partie {$object->post_type} dans le nom du modèle.

Exemple:

Le unique nom de modèle pour le post avec le slug hello-world:

single-post-hello-world.php

B) Modèles personnalisés à message unique

Une autre fonctionnalité de WordPress 4.7 sera le support de modèles personnalisés à publication unique.

Départ ticket # 18375 pour plus d'informations.

Exemple:

Je viens de tester cette nouvelle fonctionnalité en créant un fichier de modèle, par exemple. tpl-wpse-test.php, dans le répertoire du thème actuel:

<?php
/**
 * Template Name:      WPSE Template Test
 * Template Post Type: post
 */
 get_header();
 ?><div id="main"> WPSE Template Test - Success! ;-) </div><?php
 get_footer();

Ensuite, la méta-boîte suivante apparaît automatiquement dans le backend pour les types d'articles correspondants.

 Metabox 

Il existe également un support multi-postes, par exemple:

 * Template Post Type: posttype1, posttype2, posttype3

Mais il n'est pas nécessaire d'utiliser add_theme_support(), comme nous utilisons pour obtenir la méta-boîte image sélectionnée.

5
birgire