Ich habe das CPT "Event". Ich habe single-event.php erstellt.
Ich möchte, dass für ein bestimmtes Ereignis eine andere Vorlage als für ein einzelnes Ereignis verwendet wird.
Ich habe an anderer Stelle gelesen, dass dies durch Erstellen einer Single-Event- [Slug] .php geschehen könnte, aber ich habe es versucht und es funktioniert nicht. WP verwendet single-event.php. (Ich kann das nicht in der WordPress-Dokumentation finden, also denke ich, ich habe es falsch verstanden?)
Gibt es eine Möglichkeit, dies zu tun?
Informationen zu den von WordPress verwendeten Vorlagen finden Sie immer unter Vorlagenhierarchie-Schema im Codex.
Wie Sie dort sehen können, existiert single-{$posttype}-{$slug}.php
nicht, es gibt nur single-{$posttype}.php
.
Schauen Sie sich den Filter 'single_template'
an, um zu tun, was Sie wollen:
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;
} );
Nachdem Sie dies in Ihren functions.php
eingegeben haben, können Sie die Datei single-event-{$slug}.php
erstellen und sie wird von WordPress geladen.
Verwenden Sie diesen Code in Ihrer Funktionsdatei für ein untergeordnetes Thema und ändern Sie die 8 in die Post-ID, für die Sie die benutzerdefinierte einzelne CPT-Vorlage verwenden möchten.
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' );