web-dev-qa-db-fra.com

Hiérarchie des modèles WordPress

Bonjour, j'ai une question sur les noms de fichiers. Si j'ai un type d'article personnalisé et un modèle, je peux créer par exemple single-portfolio.php et obtenir le contenu des articles du portfolio dans ce fichier, mais je dois obtenir ce message pas dans le même fichier. Je veux le placer dans des fichiers individuels, par exemple single-portfolio-post1.php, quelque chose comme ça. mais le deuxième fichier que je crée ne fonctionne pas, comment puis-je le faire?

Je vous remercie

2
Aram Mkrtchyan

Vous pouvez utiliser le filtre dynamique {type}_template (où {type} est le type de requête actuel, par exemple single, index etc.) trouvé dans get_query_template() :

function wpse_204848_get_id_template( $template ) {
    if ( $post = get_queried_object() ) {
        if ( $_template = locate_template( "single-{$post->post_type}-{$post->ID}.php" ) )
            $template = $_template; 
    }

    return $template;
}

add_filter( 'single_template', 'wpse_204848_get_id_template' );

Pour une publication de portefeuille d'ID 5, il utilisera le modèle single-portfolio-5.php s'il existe.

1
TheDeadMedic

WordPress 4.3 et ci-dessous

Il n'y a rien dans la hiérarchie des modèles pour afficher un modèle basé sur un ID d'article, sauf si vous utilisez le type d'article page.

Au lieu de cela, vous devrez placer la logique conditionnelle en haut de votre single-portfolio.php.

Je vous recommanderais également d'utiliser des méta-options, des termes ou le slug de publication au lieu de l'ID. Si vous utilisez des identifiants de publication, une simple importation et exportation du contenu romprait votre thème.

Pensez également à implémenter une metabox avec une liste déroulante vous permettant de choisir un modèle. De cette façon, vous ne vous limitez pas et ne codez pas en dur le contenu de votre thème, et vous pouvez créer des modèles généraux réutilisables pour certains éléments de portefeuille.

WordPress 4.4

4.4 ajoute un nouveau modèle à la hiérarchie qui prend la forme:

single-{post_type}-{post_name}.php

Un nouveau modèle de thème a été ajouté à la hiérarchie de thèmes à partir de r34800: single- {post_type} - {post_name} .php. Ce modèle suit les règles de is_single () et est utilisé pour un seul post ou un type de post personnalisé. Il est particulièrement utile pour cibler une publication spécifique dans un type de publication personnalisé et apporte de la cohérence aux modèles disponibles pour les pages et les taxonomies. Il vient dans la hiérarchie avant single.php et single- {post_type} .php.

N'oubliez pas non plus que, dans WordPress 4.3, singular.php a été introduit et que la hiérarchie des modèles de pièce jointe a été corrigée.

1
Tom J Nowell

A partir de WordPress version 4.4, ce type de structure de modèle:

single-{post_type}-{post_name}.php 

sera pris en charge. Plus ici sur make.wordpress.org .

1
birgire

Une réponse un peu différente des autres

Si vous avez un design différent pour un article spécifique, il est préférable d'essayer de voir ce que vous pouvez faire avec CSS uniquement avant de recourir à l'écriture d'un nouveau modèle.

Cependant, la question qui reste est de savoir comment identifier le contenu approprié pour le design A et celui pour B, pour lequel je pense que la meilleure chose à faire est d’ajouter une méta-boîte dans laquelle un design peut être sélectionné et d’adopter votre sing- {post tapez} .php code pour le prendre en compte. S'il est très différent, vous pouvez placer le code dans un fichier différent, mais le point important ici est de permettre à l'administrateur de contrôler le modèle utilisé.

La raison pour donner le contrôle à l’administrateur est que vous pouvez vouloir réutiliser le modèle, et des choses telles que les identifiants et les slugs peuvent changer (en particulier les slugs).

0
Mark Kaplun