J'ai créé une publication personnalisée de type portfolio
et une taxonomy
bien sûr.
function taxonomies_portfolio() {
$labels = array(
'name' => _x( 'Portfolio categories', 'taxonomy general name' ),
'singular_name' => _x( 'Portfolio categories', 'taxonomy singular name' ),
'search_items' => __( 'Query portfolio categories' ),
'all_items' => __( 'All portfolio categories' ),
'parent_item' => __( 'Parent category' ),
'parent_item_colon' => __( 'Parent category:' ),
'edit_item' => __( 'Edit portfolio category' ),
'update_item' => __( 'Update portfolio category' ),
'add_new_item' => __( 'Add Edit portfolio category' ),
'new_item_name' => __( 'New portfolio category' ),
'menu_name' => __( 'Categories' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'rewrite' => true
);
register_taxonomy( 'portfolio_category', 'portfolio', $args );
}
add_action( 'init', 'taxonomies_portfolio', 0 );
Est-il possible de créer 1 fichier de modèle pour afficher tous les éléments d’une même catégorie? J'ai essayé de créer un taxonomy.php
mais sans succès. Quel est le nom de modèle correct à utiliser?
Selon la page Codex Wordpress sur Hiérarchie des modèles , vous créez un fichier de modèle portant le nom taxonomy-portfolio_category.php
. WordPress l'utilisera pour afficher l'archive de cette taxonomie. Vous pouvez également utiliser taxonomy-portfolio_category-{term_name}.php
pour créer des modèles pour des termes spécifiques dans votre taxonomie.
Il n'est pas nécessaire d'utiliser les tempates standard WordPress pour gérer les modèles de plusieurs taxonomies pour le même type d'article personnalisé.
Supposons que vous ayez votre: 1) portfolio
CPT avec la taxonomie 1) pcat
et 3) les termes 'sites', 'apps' et 'design' créés dans cette taxonomie (ici les slugs sont affichés).
Cas 1: Vous voudrez peut-être afficher le même modèle pour l’une de ces taxonomies pcat
. Utilisez simplement le même modèle portfolio-signle.php
unique avec le code qui affiche chaque enregistrement portfolio
de manière uniforme.
Cas 2: Supposons maintenant que vous souhaitiez afficher un modèle différent pour chaque enregistrement portfolio
CPT en fonction du terme de taxonomie pcat
("sites", "applications", "conception", "peu importe") attribué à cet enregistrement.
Vous pouvez le faire en utilisant toujours le même portfolio-signle.php
avec un modèle partiel supplémentaire pour chaque terme pcat
.
Votre portfolio-signle.php
doit contenir ce code:
<?php
get_header();
// Here you get the particular record of the `portfolio` CPT.
global $post;
// Get the array of 'pcat' taxonomy terms attached to the record
// and take the slug of first term only (just for brevity)
$txslug = get_the_terms($post, 'pcat')[0]->slug;
// Dynamically prepare the file name
$filename = get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
// Check if the file exists & readable
if (is_readable($filename)) {
// The case when you created the sub-template partial for the particular `pcat` term.
include get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
} else {
// The case for all other `pcat` taxonomy terms.
include get_template_directory() . '/partials/_portfolio-single-other.php';
}
get_footer();
Comme vous le voyez dans le code ci-dessus, vous devrez créer les sous-modèles partiels respectifs pour chaque terme de taxonomie pcat
que vous affectez à vos publications et qui gèreront réellement l'apparence du terme de taxonomie.
Ou/et créez le /partials/portfolio-single-other.php
pour gérer tous les termes pour lesquels vous souhaitez avoir une apparence uniforme.
Cela gardera vos fichiers de thèmes bien organisés et, sans aucun coût en code, vous permettra de gérer de manière flexible l'apparence des différents termes de taxonomie '.
NB: N'oubliez pas de re-déclarer global $post;
en haut de vos modèles '/partials/_portfolio-single-'.$txslug.'.php'
. Vous obtiendrez l'accès à l'objet CPT que vous souhaitez afficher sans aucun coût supplémentaire.