J'ai le "évènement" du CPT. J'ai créé single-event.php.
Je veux qu'un événement particulier utilise un modèle différent de celui à événement unique.
J'ai lu ailleurs que cela pourrait être fait en créant un single-event- [slug] .php mais je l'ai essayé et cela ne fonctionne pas. WP utilise single-event.php. (Je ne trouve pas cela dans la documentation WordPress, alors je pense que j'ai peut-être mal compris?)
Y-a-t'il une façon de le faire?
Pour les modèles utilisés par WordPress, veuillez toujours vous référer à Schéma de hiérarchie des modèles dans le Codex.
Comme vous pouvez le voir, single-{$posttype}-{$slug}.php
n'existe pas, il n'y a que single-{$posttype}.php
.
Pour faire ce que vous voulez, regardez le filtre 'single_template'
:
add_filter( 'single_template', function( $template ) {
global $post;
if ( $post->post_type === 'event' ) {
$locate_template = locate_template( "single-event-{$post->post_name}.php" );
if ( ! empty( $locate_template ) ) {
$template = $locate_template;
}
}
return $template;
} );
Après avoir ajouté ceci dans votre functions.php
, vous pouvez créer le fichier single-event-{$slug}.php
et il sera chargé par WordPress.
Utilisez ce code dans votre fichier de fonctions pour un thème enfant et modifiez le 8 en post i.D pour lequel vous souhaitez utiliser le modèle CPT unique personnalisé.
function get_custom_post_type_template($single_template) {
global $post;
if ( is_single('8') ) {
$single_template = get_stylesheet_directory() . '/custom-cpt-template.php';
}
return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );